Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 避免为头文件中的弱引用重新定义别名变量_C_Gcc_Attributes_Weak References - Fatal编程技术网

C 避免为头文件中的弱引用重新定义别名变量

C 避免为头文件中的弱引用重新定义别名变量,c,gcc,attributes,weak-references,C,Gcc,Attributes,Weak References,我在头文件中有一个变量: myHeader.h uint16 dummyVar = 0; extern const uint16 myVar __attribute__((weak,alias("dummyVar"))); 因此,当我不链接定义了myVar的部分时,链接器只会给它符号dummyVar的值 我的问题是,我正在处理一个具有给定体系结构的项目,其中头文件myHeader.h包含在几个C文件中。因此,我得到了dummyVar的多个定义。但是当我在标题之外定义dummyVar时,它对我的

我在头文件中有一个变量:

myHeader.h

uint16 dummyVar = 0;
extern const uint16 myVar __attribute__((weak,alias("dummyVar")));
因此,当我不链接定义了
myVar
的部分时,链接器只会给它符号
dummyVar
的值

我的问题是,我正在处理一个具有给定体系结构的项目,其中头文件
myHeader.h
包含在几个C文件中。因此,我得到了
dummyVar
的多个定义。但是当我在标题之外定义
dummyVar
时,它对我的
\uuuuu属性\uuuuuu
不再有效,因为当它被指定为别名时需要定义
dummyVar


我有没有办法在不改变基本架构的情况下解决这个问题

一个简单的解决方案是如下声明:

static uint16 dummyVar = 0;

myVar
的弱别名似乎没有问题,但是问题是
dymmyVar
,因为如果标题包含多次,它会被定义多次。是的,这相当准确地总结了我的问题。由于
属性
静态uint16 dummyVar=0,我无法在标题外定义
dummyVar
@我的天啊,有时候我真的很想揍自己——其实很简单也很明显。现在可以工作了-谢谢你!将其作为此线程的答案!:)@Toby在大多数情况下都是这样的
uint16 dummyVar=0不应出现在头文件中。是否
uint16 dummyVar_uuu属性_uuu((弱))满足您的需求?或者您可能希望使用
extern uint16 dummyVar
uint16 dummyVar=0