web-dev-qa-db-ja.com

講師によって書かれたすべてのCファイルが最初の行の#から始まるのはなぜですか?

私はいくつかのCコースノートを読みます、そして すべての Cプログラムソースファイルはプログラムの最初の行の単一の#で始まります。

それから空白行があり、それに続いてmain関数が続きます。

#の理由は何ですか?

(今は期限が切れているので、この章には実際に質問することはできません。)

これが例です:

#

#include <stdio.h>
int main() {
   printf("Hello, World!");
   return 0;
}
416
The Main Man

うわー、この要件は帰りに1970年代に行きます。

あなたがプリプロセッサを呼び出したければ、非常に早い日の前に標準化されたCで、あなたはソースファイルの最初の行に最初のものとして#を書かなければなりませんでした。ファイルの先頭にonly a #と書くと、他のプリプロセッサディレクティブを柔軟に配置できます。

From すばらしいDennis Ritchie自身によるオリジナルのCドラフト

12.コンパイラ制御行

[...]プリプロセッサを起動させるには、プログラムの最初の行を#で始める必要があります。空行はプリプロセッサによって無視されるので、この行は他の情報を含む必要はありません。

その文書は(そして私が狂った猫のようにこの質問に飛びつくことを可能にした)素晴らしい読書になります。

私はそれが単に感傷的である講師だと思う - それはANSI C以来確実に要求されていない.

598
Bathsheba

何もしない

C/C++のISO規格としては、

次の形式の前処理指令

# new-line

効果はありません。

そのため、今日のコンパイラでは、 空のハッシュは何もしません (like new-line ;には機能がありません)。


_ ps _ 事前標準化Cでは、# new-lineが重要な役割を果たしていました。これはCプリプロセッサを呼び出すために使用されていました(@Bathshebaが指摘するように)。だから、ここでのコードはその期間内に書かれたか、習慣から来たものです。

0
Minhas Kamal