如果我只想定义一个未定义的值,我会这样做:

#ifndef THING
#define THING OTHER_THING
#endif

如果THING是一个typedef的标识符,但没有定义呢?我想这样做:

#ifntypedef thing_type
typedef uint32_t thing_type
#endif

出现这个问题是因为我想判断外部库是否已经定义了boolean类型,但我愿意听到一个更通用的解决方案.

推荐答案

没有,在预处理阶段C++中没有这样的设施.我能做的最多就是

#ifndef thing_type
#define thing_type uint32_t 
#endif

虽然这不是一个好的编码实践,我不建议这样做.

C++相关问答推荐

在Windows上构建无聊的SSL x64

Malloc(sizeof(char[Length]))是否不正确?

使用GOTO从多个嵌套循环C继续

创建一个fork导致fget无限地重新读取文件

是否所有C编译器在将浮点数转换为整型数时都会隐式删除小数?

用C宏替换strncMP函数中的参数

整型文字后缀在左移中的用途

强制转换变量以在 struct 中蚕食

为 struct 中的数组动态分配内存时出错

当b是无符号字符时,int a=(b<;<;2)>;>;2;和int a=b&;0x3F;之间有什么区别?

如何使用libgpio(d)为Raspberry Pi编译C程序?

在C++中允许使用字符作为宏参数

如何将大写/小写土耳其字母相互转换?

在C程序中使用Beaglebone Black UART的问题

如何摆脱-WIMPLICIT-Function-声明

哪个首选包含第三个库S头文件?#INCLUDE;文件名或#INCLUDE<;文件名&>?

为什么一个在线编译器拒绝这个VLA代码,而本地的Apple clang却不拒绝;t?

根据输入/输出将 C 编译过程分为预处理、编译、汇编和链接步骤

中位数和众数不正确

使用邻接表创建图