最佳常量c约定

时间:2011-07-24 22:40:25

标签: c enums header-files

假设我想在C中声明一组常量(表示应用程序的错误代码)。你会如何将它们分成文件?你会在外部文件中使用枚举并包含它吗?

谢谢, 詹姆斯

3 个答案:

答案 0 :(得分:2)

是的,.h文件中的#defines或enums是要走的路。如果您使用像gdb这样的调试器进行调试,则枚举非常有用,因为您会看到比数字更具描述性的值。

答案 1 :(得分:2)

如果它是一组相关的数值,那么enum是正确的方法。如果值为C字符串或enum无法表示(或者如果它们不能合理地形成一组相关值),则可以使用以下两种方法之一。

使用预处理器#define语句,或使用extern const标记的变量。前者在编译时解析,因此您可以使用它来指定数组长度或在使用时主动调用代码。但是,后者允许您更改常量的值(通过在.c文件而不是.h文件中指定它),而不必重新编译使用它的每个文件。

因为extern const标记的变量可以以这种方式更改,所以它们更适用于在许多项目中重用的代码,或者作为库分发的代码。然后可以对库进行更改,而无需强制重新编译程序。

答案 2 :(得分:1)

如果它是一组值,则在头文件中声明的枚举就足够了(有些人使用#defines但由于值无关紧要,因此枚举在这种情况下工作得很好)。如果您只是想与错误代码进行比较,这是一个很好的方法。