c – 禁用特定代码块的语言扩展?
发布时间:2020-12-16 06:58:13 所属栏目:百科 来源:网络整理
导读:我想在MSVC编译器中禁用语言扩展,但仅限于特定的代码块. 有一个compiler option可以配置为禁用整个翻译单元的语言扩展(例如,整个文件),但我不想这样做.我最终希望在编译#include语句和其他预处理程序时启用语言扩展,但是为我的实际代码禁用它. 有没有办法禁
我想在MSVC编译器中禁用语言扩展,但仅限于特定的代码块.
有一个compiler option可以配置为禁用整个翻译单元的语言扩展(例如,整个文件),但我不想这样做.我最终希望在编译#include语句和其他预处理程序时启用语言扩展,但是为我的实际代码禁用它. 有没有办法禁用特定代码块的语言扩展,或在MSVC 2008中使用#pragma? 解决方法
它应该是不可能的,因为当启用语言扩展时,Visual Studio使用不同的算法来编译代码,这在预处理器扩展之后发生.换句话说,不可能用扩展编译一半文件,而另一个没有.
让我用一个使用可变长度参数列表扩展的示例来说明.如果在一个头文件中将函数定义为以下内容,该怎么办: void myfunc( int x,... ); void myfunc( int x,char * c ) { } 稍后在您的源文件中调用 char * c = new char; myfunc(5,c); 根据ANSI C,头文件中的声明完全没有意义,因此应该调用带有“…”的myfunc,而根据MSVS应该使用第二个函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读