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

San*_*ngh 10 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;
}
Run Code Online (Sandbox Code Playgroud)

实际上,我在使用vxworks的交叉编译器时遇到了这个问题.交叉编译头文件包括:typedef int INT.

但是,我的堆栈头文件使用:

 #ifndef INT  
 #define int INT
Run Code Online (Sandbox Code Playgroud)

您能否建议如何测试typedef,无论它们是否先前已定义过?

提前致谢.

use*_*016 6

我认为你不能.

typedef只是编译器的typename别名.

  • Erm'typename别名'?用斜体字表示?;)它更像是"另一种类型的同义词". (3认同)
  • 关于使用`typename alias`的观点是,它暗示这是通常的或可能基于标准的术语(对于后者绝对不是这种情况).您还混合了两个C++概念(在C++'11的情况下),它们具有完全不同的含义.但这些评论至少现在有助于澄清事情. (2认同)

Fre*_*Foo 3

不,这是不可能的。最好的选择是使用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:)