在C

时间:2016-08-03 20:00:47

标签: c arrays declaration extern

编写一个日志记录系统,我只想在一个模块中存储和修改一个数组(让我们称之为foo.c,带有一个适当命名的头文件foo.h),同时能够在main中访问它的内容。 C。在 foo.c 我有:

unsigned char log[4096] = {0};

main.c 如下:

#include "foo.h"
int main(){
    extern unsigned char log[4096];

    // code

    return 0
}

产生错误:

  

错误:'log'重新声明为不同类型的符号

我这样做了吗?我尝试将extern日志声明为“log []”和“log”,但这些也无济于事。对这个问题的一点启示会有所帮助。谢谢!

2 个答案:

答案 0 :(得分:2)

来自<math.h>的问题是the log function。最简单的解决方案是重命名数组。

答案 1 :(得分:0)

尝试将extern声明移到main之外,因为log是一个全局变量。

关键字extern基本上使编译器不会吐出错误,因为符号是在另一个模块中声明的。如果在链接时找不到符号,则会出现错误。