我在思考条件语句和编译器。我正在为Arduino编写应用程序,因此需要尽可能使应用程序更快。
在我的代码中有这个:
#define DEBUG false
...
if (DEBUG)
{
String pinName;
pinName = "Pin ";
pinName += pin;
pinName += " initialized";
Serial.println(pinName);
}
我在想编译器是否不会将代码(if块中的代码)包含在二进制文件中。条件始终为false,因此程序从不执行该部分。
从另一方面来看,如果DEBUG为true,Arduino会测试条件还是编译器仅将if体包含在二进制文件中?
我找到了这个网站https://gcc.gnu.org/onlinedocs/gcc-3.0.2/cpp_4.html关于#if指令,所以我可以重写代码,使用这些指令代替“常规”的if。但我想知道是否应该重写它,或者这将是浪费时间。
DEBUG
为假,则不会在二进制代码中包含该代码。 - The Philomath#if
/#endif
。这样可以清楚地表明DEBUG
的含义。 - LogicStuff