我知道这是一个奇怪的问题,但我试图找到一种方法来分析用户编写的代码,并收集可能包含在" if" &安培; "其他"部分。 假设我有一个if-else语句,
counter = 0;
if( true )
++counter;
else
++counter;
我是否可以强制执行++ counter"工作并获得" counter = 2"在编译时?模板?宏?还有其他方法吗?提前谢谢!
答案 0 :(得分:1)
首先,`counter'永远不会是2.它永远是1。
我说大约90%的当前C ++编译器(在" Release"模式"中运行)将识别不变量,并生成目标代码,就像你写的那样:
counter = 0;
++counter;
大部分也会达到
counter = 1;
但是,标准不要求进行这样的优化,因此无法强制使用#34;一个编译器来完成它们。
注意:Java和& Sons的规范。 C#做要求这些语言的编译器识别不变的if()
}