在 C 头文件中声明全局字符数组

Tim*_*Tim 2 c global-variables

我有一个包含所有字符串命令的头文件,如下所示:

const char AT_RSSI[] = "ATRSSI\r\n";
const char AT_DEVICE_SECURITY[] = "ATDS";
Run Code Online (Sandbox Code Playgroud)

但是,使用这种方法,每个字符语句的末尾都附加了 \0,这很不方便,因为我每次使用 sizeof() 方法时都需要删除 1 个字符

还有另一种解决方案是使用

//header file
extern const char *AT_RSSI;

//some.c
const char *AT_RSSI = "ATRSSI\r\n";
Run Code Online (Sandbox Code Playgroud)

并在其中一个 .c 文件中声明它,但我不喜欢这种方法。我希望我所有的常量变量都在头文件中声明

我可以知道如何声明一个可以包含在各种.c文件中的常量全局变量 char 数组吗?

Yu *_*Hao 5

第一段代码的问题是,你把定义放在一个头文件中,如果头文件被多个.c文件包含,会导致多个定义错误。

一般来说,只将定义放在.c文件中,并将它们的声明放在标题中。

这意味着,把它放在一个.c文件中:

const char AT_DEVICE_SECURITY[] = "ATDS";
Run Code Online (Sandbox Code Playgroud)

这在标题中:

extern const char AT_DEVICE_SECURITY[];
Run Code Online (Sandbox Code Playgroud)