【发布时间】:2021-10-17 00:05:33
【问题描述】:
我有一个标题constants.h 文件,其中包含以下数组变量声明:
extern storageCommandData storageCommands[];
数组的类型在别处定义,与问题无关。 在另一个源文件 (.c) 中,我像这样初始化了数组:
#include "constants.h"
storageCommandData storageCommands[STORAGE_COMMAND_NUM] =
{
/*storageCommandData intilazation follows the
following template: {commandName, storageSize}*/
{".db", 1},
{".dw", 4},
{".dh", 2},
{".asciz", 0},
};
我尝试在另一个源文件中使用这些数组(与我在其中定义数组的文件不同),包括 constants.h。
但是,当我尝试使用变量 storageCommands 时,我收到以下错误消息:
undefined reference to `storageCommands'
如何修复错误?
【问题讨论】:
-
链接时是否包含了包含
storageCommands定义的源文件或目标文件?请显示您用于编译和链接的命令行,或以其他方式说明您的构建过程。 -
在另一个文件中包含 .h 文件是不够的。您需要将其与包含该数组的目标文件链接
-
请先阅读this。
-
谢谢,这就是答案。我编译时没有链接定义数组的源文件
-
名称“constants.h”似乎承诺了您可能无法交付的东西(除非 typedef
storageCommandData包含const限定符)。如果它不是真正的const,那么全球化是个坏主意:embedded.com/a-pox-on-globals
标签: c extern undefined-reference