假设我的程序是:
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,无论它们是否先前已定义过?
提前致谢。
答案 0 :(得分:6)
我认为你不能。
typedef
只是编译器的 typename别名。
答案 1 :(得分:3)
不,这是不可能的。您最好的选择是自己使用typedef
,因为重新定义typedef
是错误的。
#ifdef INT
# error "No, we want to define INT!"
#endif
typedef int INT; // error if previously typedef'd
(我想你真的不想#define int INT
:)
答案 2 :(得分:1)
您不能使用typedef执行此操作,因为C没有任何reflection功能。
我所能建议的是你按照@larsmans的建议使用#define。
#define MYINT int
...
#ifdef MYINT
// MYINT is defined
#endif
答案 3 :(得分:0)
不,在C中你不能直接这样做。但是,您可以使用#ifdef
检查名称是否已定义。