当前位置:  开发笔记 > 编程语言 > 正文

如何在启用ANSI的情况下在gcc中启用C++样式的注释?

如何解决《如何在启用ANSI的情况下在gcc中启用C++样式的注释?》经验,为你挑选了3个好方法。

这只是我工作的一个问题所以我做了一点挖掘,答案是ExpertExchange.所以我把你交给最初的问题提问者,Manchung:

我有一个用纯C编写的项目,用于嵌入式系统.所以,我使用纯C来最小化代码大小.

当我编译项目时,我使用-ansi标志以确保代码符合ANSI标准.但是,使用这个ansi标志的缺点是我只允许使用C样式的注释(/*comments*/).当我需要使用嵌套注释时,这让我很头疼.

所以,我的问题是:我可以使用哪些开关/标志来允许我在保持同时启用ANSI检查的同时使用C++样式的注释(//注释)?

这也几乎总结了我的问题.



1> CesarB..:

在最近发布的gcc中,-ansi记录为与之相同-std=c89.新的注释语法仅适用于C99标准,因此-std=c99允许使用.

还有-std=gnu89,它-std=c89允许所有gcc扩展(包括C++风格的注释语法,在它被添加到标准之前很久就是GNU扩展).

还要看一下-pedantic标志,它可以给你一些有用的警告.

参考文献:

http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html

http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html


-std = gnu89可能是OP的最佳选择,-std = c99还有其他可能不可取的后果.

2> Johannes Sch..:

如果你想仅仅因为想要注释掉块而使用C++样式注释,并且对嵌套/*...*/感到头疼,你可以使用这种技术:

#if 0
... code ...
#endif

这实际上也可以完成这项工作.


我的回答有什么问题吗?如果你是downvote请评论.您不能嵌套C样式注释,C++样式注释在C++ 89中无效.如果你想要注释掉*代码*,这个`#if 0`几乎是干净利落的唯一方法.
这不回答这个问题.它只是避免它.
@ JohannesSchaub-litb在这样做的过程中,你的答案并没有回答大家点击这个链接想要解决的问题,而且不那么一般.所以,不,它并不优越.它有助于OP,但对大多数稍后点击链接的人没有帮助.这就是StackOverflow的全部内容.

3> philant..:

您可以使用-lang-c-c ++ - 注释预处理器同时具有ANSI模式和C++风格的注释.

gcc -Wp,-lang-c-c++-comments -c source.c


我相信这不再受支持了.我无法在Mac或Linux上使用GCC 4.2或4.4.我只能在GCC的CPP手册中找到这个参考(回到2.9版本)"注意:以前版本的cpp接受了一个`-lang`选项,它选择了语言和标准一致性级别.这个选项已被删除,因为它与`-l`选项冲突." 我找不到替代品.
我认为你的是明确的答案.
推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有