【发布时间】:2014-04-13 03:15:48
【问题描述】:
我有一些需要在多源文件上共享的全局变量。我已阅读How do I share variables between different .c files? 并执行以下操作:
fileA.h:
extern int a;
fileA.c:
int a;
// using a variable here
一切都编译得很好并且工作正常。但是因为我是在多线程环境下编程的,所以我把volatile关键字放在每个变量前面。所以现在是:
fileA.h:
extern volatile int a;
fileA.c:
int a;
// using a variable here
但是当我使用这种方式时,我在编译时遇到错误:
错误:包含的文件中“a”的类型限定符冲突 文件AC:4:0:
请解释一下为什么,以及如何解决这个问题?在这种情况下我们应该使用volatile吗?
【问题讨论】:
-
您需要将 volatile 修饰符放在同一个外部变量的所有声明和定义上。有关 volatile 的讨论,请参阅stackoverflow: the volatile keyword in C language
标签: c multithreading