禁用特定代码块的语言扩展
Disable Language Extensions For A Specific Block Of Code?
我想禁用MSVC编译器中的语言扩展,但只针对特定的代码块。
有一个编译器选项,可以配置为禁用整个翻译单元的语言扩展(例如,整个文件),但我不希望这样。我想,最终,当我编译#include
语句和其他预处理器的东西时,启用语言扩展,但禁用对于我的实际代码。
是否有一种方法可以禁用特定代码块的语言扩展,或者在MSVC 2008中使用#pragma
?
这应该是不可能的,因为当语言扩展被启用时,Visual Studio使用不同的算法来编译代码,这发生在预处理器扩展之后。换句话说,不可能编译一半带扩展名的文件,而另一半不带扩展名。
让我用一个使用Variable-Length Argument Lists
扩展的例子来说明。如果函数在头文件中定义如下:
void myfunc( int x, ... );
void myfunc( int x, char * c )
{ }
稍后在源文件中调用
char * c = new char;
myfunc(5, c);
根据ANSI C头文件中的声明根本没有意义,因此应该调用带有"…"的myfunc,而根据MSVS应该使用第二个函数
相关文章:
- 是否可以通过C++扩展强制多个python进程共享同一内存
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 扩展光电二极管探测器以支持多个传感器
- 不同语言中相同代码的不同行为
- C++中的VLA,扩展名为std=C++11
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- C++返回 Numpy 数组的 Python 扩展模块
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- r语言 - C++ 类型为"const std ::?
- PHP Profiler语言 - 使用 C++ 从 PHP 扩展获取客户端 IP 和 URL
- 将C 代码桥接到我的Swift代码中.哪些文件扩展名为XCode中的基于C的语言
- 是否可以将Windows和DirectX代码编写使用语言扩展
- 在编程语言中扩展预增量运算符
- 禁用特定代码块的语言扩展
- 不同C/ c++语言版本的ABI兼容性+ GNU扩展
- 语言扩展和新关键字
- 有没有建议对c++语言进行扩展,以消除痘痘
- 如何在C++中实现"is also"(扩展E语言中使用的方法)?