我知道在 C 语言中将数字常量声明为 enum
而不是 #define
是非常惯用的,或者至少是一种很好的风格。
/* bad style */
#define MAXLINE 1024
/* good/better style */
enum {
MAX_LINE = 1024
};
字符串常量的定义是否有等价的规则?
/* is this good style? */
#define HELLO "Hello World"
/* or is this better? */
const char *HELLO2 = "Howdy";
你喜欢什么?如果可能的话,展示这两种方法的一些缺点。
最佳答案
还有一条(至少)通往罗马的路:
static const char HELLO3[] = "Howdy";
(static
— 可选 — 是为了防止它与其他文件冲突)。我更喜欢这个 const char*
, 因为那样你就可以使用 sizeof(HELLO3)
因此,您不必将可以在编译时执行的操作推迟到运行时。
尽管如此,define 具有编译时串联的优势(想想 HELLO ", World!"
),您可以 sizeof(HELLO)
但是你也可以选择 const char*
并在多个文件中使用它,这将为您节省一点内存。
简而言之——视情况而定。
关于c - 你如何在 C 中声明字符串常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1431576/