gpt4 book ai didi

c - 初始化: address of static symbol 'myStruct' is used for symbol 'otherStruct'

转载 作者:行者123 更新时间:2023-12-02 11:31:34 25 4
gpt4 key购买 nike

以下代码向我发出警告:

initialization: address of static symbol 'myStruct' is used for symbol 'otherStruct'

警告出现在 SomeOtherStruct otherStruct 初始化的右括号/分号处。

typedef struct
{
U32BIT memberA;
U32BIT memberB;
} MyStruct;

typedef struct
{
U32BIT *memberAPtr;
U32BIT *memberBPtr;
} SomeOtherStruct;

static MyStruct myStruct;

int main(void)
{
SomeOtherStruct otherStruct =
{
&myStruct.memberA,
&myStruct.memberB
}; // <<-- warning given here.

// doing something with otherStruct
}

如果我做SomeOtherStruct otherStruct static然后问题就消失了。但我不想这样做,因为我不想SomeOtherStruct otherStruct当它被传递到将存储它的另一个函数/文件时始终位于内存中。

(SomeOtherStruct 来自一个库,该库需要使用指针列表对其进行初始化。)

为什么我的编译器给我这个警告,我能做什么或者我做错了什么?因为我根本没有看到这段代码有任何问题(QAC/MISRA-C 也没有看到任何问题,因为通常 QAC/MISRA-C 会提示)。

另外,可能没什么值(value),我的编译器是FUJITSU Softune Fs907s

最佳答案

如果您进行网络搜索:

"initialization: address of static symbol" "is used for symbol"

你会发现这个:

http://www.fujitsu.com/downloads/MICRO/fma/pdfmcu/softccmp-cm25-00202-2e.pdf

这显然是您所说的正在使用的同一编译器的手册。相关段落说:

W1020C %Z: address of static symbol `%D' is used for symbol `%D'

The address of a static variable is used as an initial value. It is possible to change the value of the static variable from the outside of the compile unit. Continues the compilation making the initialization valid.

这正是您所得到的:合法的 C,但您的编译器正在警告您。为什么感觉这个特定的事情值得警告,我不确定,但希望从这里您可以弄清楚如何避免警告或禁用它。

关于c - 初始化: address of static symbol 'myStruct' is used for symbol 'otherStruct' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19245783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com