?
This document uses PHP Chinese website manual Release
評(píng)論可以作為一種內(nèi)部代碼文檔。當(dāng)插入到程序中時(shí),它們被編譯器有效地忽略; 它們僅僅是用來作為閱讀源代碼的人的筆記。
/* comment */ | (1) | |
---|---|---|
// comment\n | (2) | (since C99) |
1)通常被稱為“C型”或“多線”評(píng)論。
2)通常被稱為“C ++風(fēng)格”或“單行”的評(píng)論。
在翻譯階段3通過用一個(gè)空格字符替換每個(gè)評(píng)論來從程序中刪除所有評(píng)論。
C 風(fēng)格的評(píng)論通常用于評(píng)論大塊文本或小部分代碼; 但是,它們可以用來評(píng)論單行。要將文本插入為C風(fēng)格的評(píng)論,只需使用/*
和環(huán)繞文本即可*/
。C風(fēng)格的注釋告訴編譯器忽略/*
和之間的所有內(nèi)容*/
。雖然它不是 C 標(biāo)準(zhǔn)的一部分,/**
并且*/
通常用于指示文檔塊; 這是合法的,因?yàn)榈诙€(gè)星號(hào)被簡(jiǎn)單地視為評(píng)論的一部分。
除了字符常量,字符串文字或注釋之外,這些字符會(huì)/*
引入注釋。這種評(píng)論的內(nèi)容僅用于識(shí)別多字節(jié)字符并查找*/
終止評(píng)論的字符。C風(fēng)格的評(píng)論不能嵌套。
C ++風(fēng)格的C ++風(fēng)格的評(píng)論通常用于評(píng)論單行文本或代碼; 但是,它們可以放在一起形成多行評(píng)論。要將文本作為C ++樣式的注釋插入,只需在文本前面加上//,然后按照新的行字符跟隨文本。C ++風(fēng)格的注釋告訴編譯器忽略//和新行之間的所有內(nèi)容。除了字符常量,字符串文字或注釋之外,字符//會(huì)引入一個(gè)注釋,其中包含所有多字節(jié)字符,但不包括下一個(gè)換行符。這種注釋的內(nèi)容僅用于識(shí)別多字節(jié)字符并查找終止注釋的換行符。C ++風(fēng)格的注釋可以嵌套:// y = f(x); //調(diào)用算法C風(fēng)格的注釋可能出現(xiàn)在C ++風(fēng)格的注釋中:// y = f(x); / *調(diào)用算法* / C風(fēng)格的注釋可能出現(xiàn)在C風(fēng)格的注釋中; 這是排除一小塊源代碼的機(jī)制:/ * y = f(x); //調(diào)用算法z = g(x); * / | (自C99以來) |
---|
因?yàn)樵陬A(yù)處理器階段之前刪除了注釋,所以不能使用宏來形成注釋,并且未終結(jié)的 C 樣式注釋不會(huì)從#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__);
除了注釋外,用于源代碼排除的其他機(jī)制還有:
#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中引入//注釋在一些罕見的情況下是一個(gè)突破性的改變:
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