我在dbinfo.h中有一个简单的结构,在C中的函数之间共享数据值
typedef struct {
int fields;
} dbinfo;
在主程序中我有:
#include <string.h>
...
#include "dbinfo.h"
extern dbinfo *tst_info;
void main() {
tst_info = (dbinfo *) calloc(1, sizeof(dbinfo));
dbinfo.fields = 3;
printf("\n number of fields = %d"), getnumflds());
...
}
在另一个文件utilities.c我
#include "dbinfo.h"
extern dbinfo *tst_info;
int getnumflds() {
return tst_info.fields;
}
当我试图链接我得到了一个未定义符号的utilities.c tst_info。 如果我删除extern,那么我得到没有未解决的符号,但字段的值是0.
我在这里做错了什么?
我只是希望能够使用和更改在其他函数分别编译的main中设置的'fields'的值。
因为我使用C并且无法访问这些神经元,所以一直很长时间!
没错,说多一点。 Extern只是告诉“变量是其他编译器,相信我”。但是你从来没有真正做到过,所以链接器没有找到它。 只需从其中一个文件中移除extern。 –
不明白。在主程序中,我指定它是extern并分配它。 –
当我从主程序中删除外部函数,并且在子程序中引用“字段”时,即使我在主程序中将其设置为3,它也为零。 –