《C陷阱与缺陷》中有一个有意思的问题:“某些C编译器允许嵌套注释。请写一个测试程序,要求:无论是对允许嵌套注
释的编译器,还是对不允许嵌套注释的编译器,该程序都能正常通过编译(无错误消息出现),但是这两种情况下程序执
行的结果却不相同。
(提示:在用引号括起来的字符串中,注释符I*属于字符串的一部分,而在注释中出现的双引号””又属于注释的一部分。)”
下面是利用宏定义给出的一种巧妙的算法:
#define A /* aaa /* a*/ a
#define B */
bool CanNesting()
{
#ifdef B
return false;
#else
return true;
#endif
}
嵌套,函数返回false。