是否可以隐藏(或取消定义)typedef?

时间:2015-12-09 20:42:48

标签: c++ mfc

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

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

那么我该怎么做才能隐藏或取消定义c ++中的boolean typedef?

1 个答案:

答案 0 :(得分:3)

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

typedef int foo;
#define foo not_to_be_used

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

基本上,这样就取消了typedef。如果在预编译器定义下使用foo,则上面的代码将发出错误。

Live Demo