C语言里面什么叫做嵌套注释

有的书说有的C编译器支持嵌套注释,但是最好不要使用嵌套,以防影响可移植性,那么请举个例子,什么是语言里面的嵌套注释。... 有的书说有的C编译器支持嵌套注释,但是最好不要使用嵌套,以防影响可移植性,那么请举个例子,什么是语言里面的嵌套注释。 展开
 我来答
许诗文00
推荐于2017-10-12 · TA获得超过4290个赞
知道小有建树答主
回答量:425
采纳率:100%
帮助的人:26.5万
展开全部
C语言嵌套注释
/*/**/
对于一个允许嵌套注释的C编译器,无论上面的符号序列后面跟什么,都属于注释的一部分;而对于不允许嵌套注释的C编译器,后面跟的就是实实在在的代码内容。也许有人因此想到可以在后面再跟一个用一对引号引起的注释结束符:
/*/**/ "*/"
如果允许嵌套注释,上面的符号序列就等效于一个引号;如果不允许,那么就等效于一个字符串"*I"。因此,我们可以接着在后面跟一个注释开始符以及一个引号:
/*/**/ "*/"/*"
如果允许嵌套注释,上面就等效于用一对引号引起的注释开始符"/*";如果不允许,那么就等效于一个用引号括起的注释结束符,后跟一段未结束的注释。我们可以简单地让最后的注释结束:
/*/**/ "*/"/*" /**/
这样,如果允许嵌套注释,上面的表达式就等效于"/*",:如果不允许,那么就等效于,"*/"。

/*/*/0*/**/1
这个解法主要利用了编译器作词法分析时的“大嘴法”规则。如果编译器允许嵌套注释,则上式将被解释为:
/*/*/0*/**/1
两个/*符号与两个*/符号正好匹配,所以上式的值就是1。如果不允许嵌套注释,注释中的/*将被忽略。因此,即使卿出现在注释中也没有特殊的含义:上面的表达式因此将被这样解释:
/*/*/0*/**/1
它的值就是0*1,也就是0o

#define A /* aaa /* a*/ a
#define B */

bool CanNesting()
{
#ifdef B
return false;
#else
return true;
#endif
}
忘至白葬不情必0T
推荐于2017-09-06 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
比如:
/*aaa/*bbb*/aaa*/
这样的注释。有的编译器看到bbb后面的*/就会以为注释结束了。这就出错了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式