为什么我的讲师写的所有C文件都以#开头?
我正在阅读一些C课程笔记,每个C程序源文件都以程序第一行的单个 # 开头 .
#
然后有空格,然后跟着 main 函数后跟其他东西 .
main
# 的原因是什么?
(现在这是不合时宜的,我不能真的问这个小伙子 . )
这是一个例子(在收盘结束时有一个额外的行 } )
}
# #include <stdio.h> int main() { printf("Hello, World!"); return 0; }
哇,这个要求可以追溯到20世纪70年代 .
在预标准化C的早期阶段,如果你想调用预处理器,那么你必须在源文件的第一行写一个 # 作为第一行 . 仅在文件顶部写入 # 可以灵活地放置其他预处理器指令 .
来自an original C draft by the great Dennis Ritchie himself:
12.编译器控制线[...]为了使[预]处理器被调用,程序的第一行必须以#开头 . 由于预处理器会忽略空行,因此该行不需要包含其他信息 .
那个文件可以很好地阅读(并允许我像疯猫一样跳上这个问题) .
我怀疑这是讲师只是多愁善感 - 自从ANSI C以来就没有必要 .
截至C / C的ISO标准:
#new-line形式的预处理指令无效 .
所以在今天的编译器中,空哈希没有做任何事情(比如 new-line ; 没有功能) .
new-line ;
PS :在预先标准化的C中, # new-line 具有重要作用,它用于调用C预处理器(如@Bathsheba所指出的) . 所以,这里的代码要么是在那个时间段内写的,要么是来自习惯 .
# new-line
2 回答
哇,这个要求可以追溯到20世纪70年代 .
在预标准化C的早期阶段,如果你想调用预处理器,那么你必须在源文件的第一行写一个
#
作为第一行 . 仅在文件顶部写入#
可以灵活地放置其他预处理器指令 .来自an original C draft by the great Dennis Ritchie himself:
那个文件可以很好地阅读(并允许我像疯猫一样跳上这个问题) .
我怀疑这是讲师只是多愁善感 - 自从ANSI C以来就没有必要 .
截至C / C的ISO标准:
所以在今天的编译器中,空哈希没有做任何事情(比如
new-line ;
没有功能) .PS :在预先标准化的C中,
# new-line
具有重要作用,它用于调用C预处理器(如@Bathsheba所指出的) . 所以,这里的代码要么是在那个时间段内写的,要么是来自习惯 .