在C中声明常量字符串的最佳方法

在C中声明常量字符串的最佳方法,c,c-preprocessor,constants,C,C Preprocessor,Constants,我有一个字符串:“世界是一个居住的美丽地方。” 我有两个源文件和一个全局头文件。我可以通过两种简单的方式访问字符串:- 如图所示声明和定义常量变量:我可以使用extern const char*str=“世界是一个美丽的居住地。” 使用#定义STR“世界是一个美丽的居住地。” 上述两个选项中,哪一个在C? 中不重要?(不管你是否只考虑得到字符串文字)你是怎么做的,但是如果你想在调试器中找到字符串常量,你可能想使用 const char *STR =…< /COD> < /P> 有了宏定义

我有一个字符串:
“世界是一个居住的美丽地方。”

我有两个源文件和一个全局头文件。我可以通过两种简单的方式访问字符串:-

  • 如图所示声明和定义常量变量:我可以使用
    extern

    const char*str=“世界是一个美丽的居住地。”

  • 使用
    #定义STR“世界是一个美丽的居住地。”

上述两个选项中,哪一个在C?

中不重要?(不管你是否只考虑得到字符串文字)你是怎么做的,但是如果你想在调试器中找到字符串常量,你可能想使用<代码> const char *STR =…< /COD> < /P> 有了宏定义,您将了解宏的所有问题 扩张——扩张的副作用,名称的污染 空间、与调试器帮助的偏差等


除了“变量”
str
的定义是错误的之外,这主要是个人品味的问题,以及你应该如何使用它。考虑到一个变量会污染每个包含全局变量标题的翻译单元。答案显而易见。