有没有办法检查变量是否在编译时声明?

时间:2014-02-07 11:39:38

标签: c++ c

我的意思是这样的情况(这当然是假代码/想法/因为我知道它不起作用):

int main() {
  int my_int = 42;
  #ifdef my_int
    my_int = 43;
  #else
    int my_int = 43;
}

我知道c / c ++程序看不到变量的名称,也无法判断它是否已设置但是编译器可以这样做,我问这里是否有任何方法可以将编译器指向给定的操作,如省略或在遇到同一块中存在重复声明的情况时插入一段代码。

2 个答案:

答案 0 :(得分:6)

没有。当您有重复的声明时,唯一可能发生的是编译器错误。它总是形成不良。而且由于预处理器不知道变量,你也不能使用它。

答案 1 :(得分:1)

不,没有办法。即使有,使用它也会走向疯狂的道路。

如果你知道符号的声明是以某个已定义的常量为条件的,那么在该常量上使用#ifdef来决定该做什么。

如果你不知道符号的声明是什么条件,你真的不应该乱用那个符号,因为它显然是你项目的外部。