问题描述
我正在阅读有关复合文字的信息,我发现它们是l值。因此,我怀疑您可以分配它们,因此我进行了一个实验,并注意到它在编译时没有警告,gcc -Wall -Wextra -pedantic
:
struct foo {
int x;
int y;
};
int main(void) {
(struct foo){0,0} = (struct foo){1,1};
}
这让我感到困惑,因为我真的看不到任何可能有用的情况。您什么时候要为复合文字赋予 什么?
还是这是常见的未定义行为之一?因为它看起来非常像修改字符串文字。使用上面的相同参数编译时不会发出警告:
struct foo *ptr = &(struct foo){0,0};
*ptr = (struct foo){1,1};
char *str = "Hello";
*str = 'X'; // Undefined behavior
,修改字符串是未定义的行为
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)