Ansi-C中的单行注释

mor*_*ort 25 c gcc

我习惯于用//Java和Visual Studio标记单行注释,并且对于Ansi-C不存在这一点感到惊讶.使用/* my comment */非常烦人.使用Ansi-C时是否还有其他方法可以标记单行注释?

Bre*_*ale 31

ANSI-C,不,但目前的C99标准允许它们.

  • 在经历了最近的麻烦之后,尽管我只想补充一点-我不喜欢在C99,C11等中使用C ++`//`注释。直接说,我想知道要处理的内容:“这是C文件”。从来没有给我带来任何问题。不过,这纯粹是个人喜好。另外,`//`注释在宏中不起作用-并且我不在这里查找宏与内联参数。 (2认同)

Fle*_*exo 10

你也可以写一个宏:

#define COMMENT(x)

int main() {
   COMMENT(Hi there)
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

除此之外,ANSI C中没有任何明显的内容 - 您注意到/* */样式在ANSI C 89中无效是正确的

  • 宏的缺点是你的注释不能包含逗号,除非你将它包装在parantheses中(如`COMMENT((Hi,there))`) (3认同)
  • @caf - 同意 - 我认为它实际上不会比简单地输入“/* */”给你带来任何好处 (2认同)
  • @awoodland:我更喜欢使用`//`语法来注释代码,因为您只需要在行的开头输入。在末尾写入“COMMENT(”和右括号根本不会改善这一点。 (2认同)

pmg*_*pmg 7

好 ...

ANSI C 是 C99;它允许从//扩展到行尾的注释。
在之前发布的标准 (C89/C90)//中没有描述注释(但许多编译器无论如何都接受它们作为额外的)。

您还有另一个注释选项:#if 0/#endif构造(通常用于注释掉“非活动”代码)

/* ... */
#如果 0
这是一条评论
#万一
/* ... */

  • 对于`gcc`,使用`gcc -ansi -pedantic ...` 与`gcc -std=c89 -pedantic ...` 相同(目前)。要在 C99 符合标准的模式下使用 `gcc`(就目前而言),请尝试 `gcc -std=c99 -pedantic ...` (4认同)
  • ANSI-C 或 ISO-C 是相同的东西(一个由 ANSI 发布:*美国国家标准协会*,另一个由 ISO:*国际标准化组织*)。ANSI 于 1989 年(以及 ISO 于 1990 年)发布了一个 C 标准,该标准被 1999 年标准(两个组织)取代,后者将被下一个标准取代。当前标准的草案可在 http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1256.pdf 免费获得。即将出台的标准草案位于 http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1548.pdf (3认同)