我正在编写一本名为C Programming: A Modern Approach的书,在讨论数组的第一部分中,作者说:
使用宏来定义数组的长度是很好的做法
然后使用简短的例子:
#define N 10
...
int a[N];
我知道它与能够返回到程序的源代码并更改值有关,并使其成为宏可能使程序员更容易,但我不确定。 为什么这是一个很好的做法,还是客观的?
答案 0 :(得分:4)
这是一个很好的做法,因为
话虽如此,我不确定我是否同意这是最好的方法。枚举也可以工作并避免宏的一些问题(例如更难以覆盖和静默编译)。而且const int
也适用于IIRC。
作为参考,这将与cc
编译:
const int s = 1;
int a[s];
int main() {
return 0;
}
Apple LLVM 4.2版(clang-425.0.28)(基于LLVM 3.2svn)
目标:x86_64-apple-darwin12.4.0
线程模型:posix
答案 1 :(得分:2)
这是一个非常好的做法,C语言规范本身说永远不会将常量隐藏到代码中,而是用有意义的名称来定义它们。有几种方法可以做到,宏(我个人最喜欢,因为他们不使用内存),全局(使用内存,可以修改),常量全局(使用内存,但永远不会改变)。