假设我的程序是:
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;
}
事实上,我在为vxworks使用交叉编译器时遇到了这个问题。交叉编译器头文件包括:typedef int int.
但是,我使用了堆栈的头文件:
#ifndef INT
#define int INT
你能建议一下如何测试typedef吗,不管它们以前是否定义过?
提前谢谢。
我认为你做不到。
typedef
只是编译器的类型名别名。
不,这是不可能的。您最好的选择是自己使用typedef
,因为重新定义typedef
是一个错误。
#ifdef INT
# error "No, we want to define INT!"
#endif
typedef int INT; // error if previously typedef'd
(我想你并不是真的想#define int INT
:(
您不能用typedef来实现这一点,因为C没有任何反射功能。
我只能建议你按照@larsmans的建议使用#define。
#define MYINT int
...
#ifdef MYINT
// MYINT is defined
#endif
否,在C中不能直接执行此操作。但是,您可以使用#ifdef
来检查名称是否已定义。