2014-02-07 28 views
0

我的意思的情况下是这样的(这当然是错误的代码/想法只/因为我知道它不喜欢的工作):有没有办法检查变量是否在编译时声明?

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

我知道,C/C++程序不能看到的名字变量,并不能告诉它是否设置,但编译器可以做到这一点,我问这里有什么办法可以指示编译器给定的行为,如忽略或插入一段代码,当它遇到一个情况时,有重复的声明同一块。

+1

由于预处理器不知道该信息,因此无法使用预处理器语句来完成。只有编译器才能做到。它没有。 –

+1

如果你的功能如此之大以至于你需要这个功能,你应该考虑将其拆分... –

+0

是否有任何代码中的“编译器指令”? – rsk82

回答

6

不是。当您有重复的声明时可能发生的唯一情况是编译器错误。它总是不合格的。而且由于预处理器不知道变量,所以也不能使用它。

1

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

如果您知道某个符号的声明是以某个定义的常量为条件的,请使用该常数的#ifdef来决定要执行的操作。

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

+0

所有被滥用的都是走向疯狂的道路。 – rsk82

相关问题