旧 C 文件中的单个“#”

g0m*_*mb4 38 c

#我开始研究旧的 C 代码(Unix v6),我想知道文件开头的单个的目的是什么.c。例如来自https://github.com/lsahn-gh/unix-v6/blob/master/sys%2Fken%2Falloc.c

#
/*
 */

#include "../param.h"
#include "../systm.h"
#include "../filsys.h"
...
Run Code Online (Sandbox Code Playgroud)

g0m*_*mb4 65

来自Stephen Kitt在 Retrocomputing Stack Exchange 上的回答:

\n
\n

Dennis M. Ritchie\xe2\x80\x99s 《C 语言的发展》论文给出了这样的背景:

\n
\n

[...] 预处理器最初被认为是语言本身的可选附件。事实上,多年来,它甚至没有被调用,除非源程序在开头包含一个特殊信号。

\n
\n

[...] 开头的 \xe2\x80\x9c 特殊信号 \xe2\x80\x9d 是#第一个字符。

\n
\n


Edu*_*ani 13

这是一个无操作。根据其中一项标准(定义未改变):

3.8.7 空指令

语义学

表单的预处理指令

    #  new-line
Run Code Online (Sandbox Code Playgroud)

没有影响。

至于目的,之前已经问过,例如检查这个。当时它可能与可读性有关,因为带有 # 的行仅在源代码中可见,预处理器根本不输出任何内容。但这只是猜测,实际上它一直是而且仍然是一个空操作。