C - Comment syntax in C language
Comment Syntax In C Language
当我们在VC下开发时误以为C语言有两种注释语法,即//
和/**/
,但是事实上却并非如此,不同版本的C标准中有的可以使用前一种注释语法,但在有的标准下却无法使用,下面将给出标准的详细介绍,GCC对C标准的支持,以及注释语法的替代方案
C Comment Syntax
首先要明白C语言处于不断进化的过程,随着时间的推移,现在有若干的C语言标准,不同标准对C语言语法,标准库函数等做了规定,同时GCC编译器不仅提供了对各个标准的支持还提供了自带的GCC语言扩展特色(详细介绍)
第一版标准C(即ANSI-C,也称为C89或C90亦或iso9899:1990)允许的注释语法仅仅有/**/
并且不允许注释嵌套(注释结束符尽早匹配,多行注释不允许嵌套不仅仅存在于ANSI-C标准,后续标准也有此规定)
标准C99中C语言才引入注释语法//
,也就是说在ANSI-C标准下是无法使用//
风格的注释语法的,如果你在gcc编译语言时报错expected expression before ‘/’ token
,恭喜你,这是因为gcc以ANSI-C模式工作,但是你的源码中却有//
风格的注释,下面我们将提出几种方案了解决这个问题
GCC下编译单行注释
-
将gcc切换为C99标准
$ gcc -std=c99 test.c
-
将gcc切换为gcc扩展标准
$ gcc -std=gnu89 test.c
提示:你可以通过gcc选项-pedantic来报告不合ANSI-C标准的语句
注释的替代方案
-
使用宏定义
#define COMMENT(c) int main(int argc, char *argv[]) { printf("%s\n", "mouse"); COMMENT(printf("%s\n", "dog");) return 0; }
-
使用条件编译
#if 0 The content of comments #endif
当你要注释大段代码而又不知道其中是否已经有了
/**/
注释时(如果有的话,再用/**/
注释就形成嵌套注释了)使用该方法最为保险