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

时间:2011-04-22 11:16:36

标签: c

假设我的程序是:

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,无论它们是否先前已定义过?

提前致谢。

4 个答案:

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