可以隐藏(或取消定义)typedef吗

Is it possible to hide (or undefine) a typedef?

本文关键字:定义 typedef 取消 隐藏      更新时间:2023-10-16

为了避免混淆和可能的错误,是否可以隐藏或取消定义typedef。

我同时做了很多c++和java。在java中,布尔类型为boolean,在c++中为bool。问题是,在windows c++库的某个地方,有一个:typedef unsigned char boolean;。这意味着,在我的c++代码中,我将bool类型错误键入为boolean,它将进行编译,并可能导致意外错误,因为它是一个无符号字符,而不是真正的bool

那么,我可以做些什么来隐藏或取消定义c++中的布尔类型定义呢?

是的,可以使用如下示例中的预编译器指令:

typedef int foo;
#define foo not_to_be_used
int main() {
  foo a = 1; // error: unknown type name 'not_to_be_used'
}

基本上,通过这种方式可以取消typedef。如果在预编译器定义之下使用foo,则上面的代码将发出错误。

实时演示