c我们可以验证是否已经定义了typedef



假设我的程序是:

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来检查名称是否已定义。