假设我的程序是:
typedef int MYINT;
int main()
{
MYINT x = 5;
........
do_something()
........
/* I wanna test whether MYINT is defined or not */
/* I can't use: ifdef (MYINT), since MYINT is not a macro */
........
return 0;
}
Run Code Online (Sandbox Code Playgroud)
实际上,我在使用vxworks的交叉编译器时遇到了这个问题.交叉编译头文件包括:typedef int INT.
但是,我的堆栈头文件使用:
#ifndef INT
#define int INT
Run Code Online (Sandbox Code Playgroud)
您能否建议如何测试typedef,无论它们是否先前已定义过?
提前致谢.
我认为你不能.
typedef只是编译器的typename别名.
不,这是不可能的。最好的选择是使用typedef自己,因为重新定义 atypedef是一个错误。
#ifdef INT
# error "No, we want to define INT!"
#endif
typedef int INT; // error if previously typedef'd
Run Code Online (Sandbox Code Playgroud)
(我想你并不是真的想要#define int INT:)