我是C ++的新手,我正在尝试在以下代码块中更新BOOL
变量:
#define REMOVE_REPLACED_BY_SUCESSOR 1
bool rm_by_succ = 0;
#ifdef REMOVE_REPLACED_BY_SUCESSOR
rm_by_succ = 1;
#endif
但是我的g ++编译器给我以下错误:
‘rm_by_succ’ does not name a type
有人可以向我解释我做错了什么吗?
如dxiv所说,您不能在函数外部拥有代码。但是,您可以这样做:
#ifdef REMOVE_REPLACED_BY_SUCESSOR
bool rm_by_succ = 1;
#else
bool rm_by_succ = 0;
#endif
更好的是,将这些变量定义为const
,并使用true
和false
。
假设rm_by_succ
在全局范围内声明,那么您不能在声明后立即重新分配它。此类代码在全局范围内是不允许的。您将不得不在函数内部进行重新分配,例如main()
,例如:
#define REMOVE_REPLACED_BY_SUCESSOR 1
bool rm_by_succ = false;
int main() {
#ifdef REMOVE_REPLACED_BY_SUCESSOR
rm_by_succ = true;
#endif
...
}
或者,您可以这样编写声明本身:
#define REMOVE_REPLACED_BY_SUCESSOR 1
bool rm_by_succ =
#ifdef REMOVE_REPLACED_BY_SUCESSOR
true
#else
false
#endif
;