Alg*_*lgo 1 c preprocessor compiler-directives
我有这行代码:
#define ALPHABET_SIZE 'z' - 'a' + 1
Run Code Online (Sandbox Code Playgroud)
当我将鼠标悬停在代码中的任意位置 ALPHABET_SIZE 上时,它告诉我它扩展到'z' - 'a' + 1. 所以我想知道每次在我的代码中使用 ALPHABET_SIZE 时是否必须重新计算这个表达式?如果是这样,我怎样才能防止重新计算?
#define ALPHABET_SIZE 'z' - 'a' + 1
Run Code Online (Sandbox Code Playgroud)
预处理器替换每个 ALPHABET_SIZE
和
'z' - 'a' + 1
Run Code Online (Sandbox Code Playgroud)
然后编译器很可能会执行常量折叠优化,用 26 替换计算。
Demo https://godbolt.org/z/Mo46db,表达式替换为26gcc 10.2
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |