?
? ????? PHP ??? ???? ??? ?? ??
評論可以作為一種內部代碼文檔。當插入到程序中時,它們被編譯器有效地忽略; 它們僅僅是用來作為閱讀源代碼的人的筆記。
/* comment */ | (1) | |
---|---|---|
// comment\n | (2) | (since C99) |
1)通常被稱為“C型”或“多線”評論。
2)通常被稱為“C ++風格”或“單行”的評論。
在翻譯階段3通過用一個空格字符替換每個評論來從程序中刪除所有評論。
C 風格的評論通常用于評論大塊文本或小部分代碼; 但是,它們可以用來評論單行。要將文本插入為C風格的評論,只需使用/*
和環(huán)繞文本即可*/
。C風格的注釋告訴編譯器忽略/*
和之間的所有內容*/
。雖然它不是 C 標準的一部分,/**
并且*/
通常用于指示文檔塊; 這是合法的,因為第二個星號被簡單地視為評論的一部分。
除了字符常量,字符串文字或注釋之外,這些字符會/*
引入注釋。這種評論的內容僅用于識別多字節(jié)字符并查找*/
終止評論的字符。C風格的評論不能嵌套。
C ++風格的C ++風格的評論通常用于評論單行文本或代碼; 但是,它們可以放在一起形成多行評論。要將文本作為C ++樣式的注釋插入,只需在文本前面加上//,然后按照新的行字符跟隨文本。C ++風格的注釋告訴編譯器忽略//和新行之間的所有內容。除了字符常量,字符串文字或注釋之外,字符//會引入一個注釋,其中包含所有多字節(jié)字符,但不包括下一個換行符。這種注釋的內容僅用于識別多字節(jié)字符并查找終止注釋的換行符。C ++風格的注釋可以嵌套:// y = f(x); //調用算法C風格的注釋可能出現(xiàn)在C ++風格的注釋中:// y = f(x); / *調用算法* / C風格的注釋可能出現(xiàn)在C風格的注釋中; 這是排除一小塊源代碼的機制:/ * y = f(x); //調用算法z = g(x); * / | (自C99以來) |
---|
因為在預處理器階段之前刪除了注釋,所以不能使用宏來形成注釋,并且未終結的 C 樣式注釋不會從#include 的文件溢出。
/* An attempt to use a macro to form a comment. *//* But, a space replaces characters "//". */#ifndef DEBUG #define PRINTF //#else #define PRINTF printf #endif... PRINTF("Error in file %s at line %i\n", __FILE__, __LINE__);
除了注釋外,用于源代碼排除的其他機制還有:
#if 0 puts("this will not be compiled"); /* no conflict with C-style comments */ // no conflict with C++-style comments#endif
if(0) { puts("this will be compiled but not be executed"); /* no conflict with C-style comments */ // no conflict with C++-style comments}
在 C99中引入//注釋在一些罕見的情況下是一個突破性的改變:
a = b //*divisor:*/ c+ d; /* C89 compiles a = b / c + d; C99 compiles a = b + d; */
/* C-style comments can contain multiple lines. */ /* Or, just one line. */ // C++-style comments can comment one line. // Or, they can// be strung together. int main(void){ // The below code won't be run // return 1; // The below code will be run return 0;}
C11 standard (ISO/IEC 9899:2011):
6.4.9 Comments (p: 75)
C99 standard (ISO/IEC 9899:1999):
6.4.9 Comments (p: 66)
C89/C90 standard (ISO/IEC 9899:1990):
3.1.9 Comments