是否可以使用 #define 重新定义 C++ 关键字?
#ifdef int
#undef int
#define int 2
#endif
int main(){
//Do something with int
}
在这种情况下我看不到输出,但我想了解内部发生的情况。我没有 #define 的原因是我发现如果不使用标准头文件,则可以 #define 保留关键字。我还尝试运行以下代码。
#include<iostream>
using namespace std;
#ifdef int
#undef int
#endif
int main(){
cout<<int;
}
但上面的 te 在 cout 行抛出错误。
是否可以?是的。款式好不好?绝对不。
预处理器不知道 C/C++ 关键字,它只知道预处理器标记,并且只执行严格的文本替换。
您的示例会导致错误,因为您是#undef
荷兰国际集团它。一旦取消定义,它就会恢复到之前的行为。
我知道做这样的事情的唯一有效用途是解决旧编译器中的错误 https://stackoverflow.com/questions/984878/what-is-the-possible-use-for-define-for-if-false-else-for,而该编译器如今已不再相关。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)