为避免混淆和可能的错误,是否可以隐藏或取消定义typedef。
我同时做了很多c ++和java。在java中,布尔类型是boolean
,而在c ++中它是bool
。问题是在windows c ++库的某个地方有一个:typedef unsigned char boolean;
这意味着,在我的c ++代码中,我将bool
类型错误地键入为boolean
,它将编译并且它可能会导致意外错误,因为它是一个unsigned char而不是true bool
。
那么我该怎么做才能隐藏或取消定义c ++中的boolean typedef?
答案 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
,则上面的代码将发出错误。