【发布时间】:2014-10-23 00:49:17
【问题描述】:
我正在尝试访问我的主文件中的程序数组。它在头文件中声明并在名为 fileReader 的单独模块中初始化。我收到的错误信息是
架构 x86_64 的未定义符号: “_programs”,引用自: _main 在 test-0bf1e8.o ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
main.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "header.h"
#include "fileReader.c"
int main() {
readPrograms();
for (int i=0; i<4; i++) {
printf("%s", programs[i]);
}
return 0;
}
fileReader.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "header.h"
int readPrograms() {
int i=0;
int numProgs=0;
char* programs[50];
char line[50];
FILE *file;
file = fopen("files.txt", "r");
while(fgets(line, sizeof(line), file)!=NULL) {
//add each filename into array of programs
programs[i]=strdup(line);
i++;
}
fclose(file);
return 0;
}
header.h
extern char* programs[];
提前致谢
【问题讨论】:
-
您没有全局数组。如果你想在一个模块中使用它,你需要创建一个,更不用说多个模块了。
标签: c arrays header-files extern