Single line comments in Ansi-C
我习惯于使用EDCOX1 0来标记Java和VisualStudio中的单行注释,并惊奇地发现ANSI-C不存在。使用ansi-c时,是否有其他方法标记单行注释?
- 如果有人解释他们为什么投反对票…
- 投反对票的原因可能是你问了一个很容易在谷歌上解决的问题。在ansi-c中不存在一种特殊的注释风格,这是表达烦恼的一件事,也是另一件事。混合评论风格是个坏习惯/*只是说*/
- 好吧,确实可以很容易地发现,ansi-c没有用于单行注释的特殊语法,但我在询问其他选项。
- :-)您可以随时切换到支持它的C99标准,瞧,烦恼消失了。
ANSI-C,没有,但是当前的C99标准允许这样做。
- 在最近的一次颠簸之后,我只想添加——我不喜欢在C99、C11等中使用C++ EDCOX1 2个评论,我直接处理我正在处理的:"这是一个C文件"。它从未给我带来任何问题。不过,这纯粹是个人偏好。另外,//注释在宏中不起作用——我在这里不寻找宏与内联参数。
还可以编写宏:
1 2 3 4 5 6
| #define COMMENT(x)
int main() {
COMMENT(Hi there)
return 0;
} |
除此之外,在ansi c中没有明显的内容-您注意到/* */样式在ansi c 89中无效是正确的。
- 宏的缺点是注释不能包含逗号,除非用paranthess包装(如COMMENT((Hi, there))中所示)。
- @咖啡馆-同意-我不认为它实际上比简单地输入/* */赢得任何东西。
- @awoodland:我更喜欢用//语法来注释代码,因为您只需要在行的开头键入。在末尾写一个右括号和一个右括号并不能改善这一点。
- 与传统评论相比,这种评论有什么优势?
好。。。
ansi c是c99;它允许从//开始的注释扩展到行的末尾。在先前发布的标准(C89/C90)中,没有描述//的评论(但许多编译器还是将其作为额外的评论接受)。
您还有另一个注释选项:#if 0/#endif构造(通常用于注释"非活动"代码)
1 2 3 4 5
| /* ... */
#if 0
This is a comment
#endif
/* ... */ |
- 现在变得更清楚了。我使用的是-pedantic选项,它强制执行严格的iso c,而不仅仅是ansi-c。是否正确地说,asni-c(c99)中允许使用//,但不允许使用严格的iso c?
- 对于gcc,使用gcc -ansi -pedantic ...与(目前)gcc -std=c89 -pedantic ...相同。要在符合C99标准的模式下使用gcc(目前为止),请尝试gcc -std=c99 -pedantic ...。
- 谢谢你的澄清!所以有不同版本的C-C89,C99和C11。至少前两个也被标准化为ANSI-C和ISO-C,这是不一样的,对吗?
- ansi-c,或iso-c,都是一样的(一个由ansi:美国国家标准协会出版,另一个由iso:国际标准化组织出版)。1989年,美国国家标准化组织(ANSI)和1990年的国际标准化组织(ISO)发布了一个C标准,该标准被1999年的标准(两个组织)所取代,该标准将被下一个标准所取代。现行标准草案可在open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf上免费查阅。即将出台的标准草案见open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf。
- 好的,我明白了。但是,如果有其他的ANSI标准(C99),为什么GCC仍然把ANSI解释为C89?
- 因为GCC还没有完全符合C99标准:参见gcc.gnu.org/c99status.html
- ANSI以403美元的价格出售该标准;ISO以352瑞士法郎的价格出售该标准。
- 非常感谢你的回答。作为一名学生,我买不起这个标准;)
- @MORT:免费提供的N1256.pdf草稿与标准的proper一样——显然,甚至GCC程序员也使用草稿:—)
抱歉,在ANSI-C中,似乎只使用了/* comment */。http://members.cox.net/midian/articles/ansic1.htm网站