Mar*_*ský 13 c c++ gcc if-statement arduino
我想到条件和编译器.我正在编写Arduino的应用程序,所以我需要尽可能快的应用程序.
在我的代码中我有这个:
#define DEBUG false
...
if (DEBUG)
{
String pinName;
pinName = "Pin ";
pinName += pin;
pinName += " initialized";
Serial.println(pinName);
}
Run Code Online (Sandbox Code Playgroud)
我想知道编译器是否在二进制文件中不包含代码(if块中的代码).条件总是错误的,所以程序永远不会去那里.
从另一方面来看.如果DEBUG是真的怎么办?Arduino是否测试条件或编译器只包含if在二进制文件中的主体?
我发现这个网站https://gcc.gnu.org/onlinedocs/gcc-3.0.2/cpp_4.html关于#if指令,所以我可以重写代码以获得这些指令而不是"正常"if.但我想知道我是否应该重写它,或者是否浪费时间.
Lun*_*din 10
任何半好的优化编译器都会删除if语句中的整个代码,如果它可以在编译时告诉条件总是求值为false.类似地,如果条件总是为真,那么任何半正式编译器都会跳过检查本身.
实际上,这完全等同于"编译器开关",例如:
#define DEBUG
#ifdef DEBUG
...
#endif
Run Code Online (Sandbox Code Playgroud)
#ifdef
更喜欢"编译器切换"语法,因为它使其他C程序员的意图更清晰.但这只是编码风格的问题 - 它将产生与原始代码相同的二进制文件.
归档时间: |
|
查看次数: |
1936 次 |
最近记录: |