问题标签 [compound-literals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - 我可以为复合文字指定部分属性吗?
使用 GCC,我可以这样做:
但是当我如下使用复合文字时,GCC 会抱怨警告:'section' 属性不适用于类型 [-Wattributes]。
有什么办法过得去吗?谢谢你。
c - 有什么方法可以初始化动态分配的结构?
C11 为我们提供了简洁的结构初始化语法:
但是,当必须动态分配结构时,它似乎不起作用:
此代码产生:
这段代码产生:
C中有什么方法可以很好地初始化一个动态分配的结构,还是我宁愿写这样的东西:
这有点不方便,因为(a)这意味着结构的每个成员都必须占据自己的行,因为当人们;
在源代码中看到一个符号不是其行的最后一个符号时,他们往往会皱眉,并且(b)我'不能0
像在正常的结构初始化中那样依赖未指定的值被初始化。
c - 给定一个指向结构的指针,我可以在一行中为该结构分配聚合初始化器的结果吗?
例如,给定一个结构 S:
...和一个带有指向 的指针的方法,我可以在一行中将S
聚合初始化程序1的值全部分配给它吗?这是我现有的使用临时解决方案:
我正在使用 C11。
1对于非常罕见的不理解我的问题的超级学徒,因为不知何故“聚合初始化器”在这里不适用,因为 LHS 没有声明一个新对象,我的意思是“带有大括号和东西的类似聚合初始化器的语法”。
c - 在 C 中初始化指向复合文字的指针
这是初始化指针的一种不太常见的方法:
在这里,指针指向复合文字。
输出:
该程序在 G++ 编译器中编译并运行良好。
所以,
这是初始化指向复合文字的指针的正确方法吗?或者
是未定义的行为初始化指向复合文字的指针吗?
c - 初始化复合文字内的变量
我对C相当陌生,只是偶然发现了复合文字,所以如果我的问题不准确,请纠正我。
我有一个结构;
现在我明白这可以用以下初始化。
我的问题是,我可以someVal
使用 void 函数进行初始化吗?
我已经设法在一个函数中初始化结构本身及其各自的成员而没有任何问题,但是很好奇这是否是一种替代(甚至是合理的)选择?
c - “p = (int[2]){*p};”是什么意思 C指针中的行?
据我了解,我将变量的地址传递a
给函数int ffx1
。
在那之后,这条线到底是什么p = (int[2]){*p};
意思?
c - 在外部结构初始化中反映内部结构
我有一个结构代码,如下所示:
在源代码中,我有一个如下所示的初始化:
源代码中的这种构造正在更新字段,struct B
但我不明白如何更新字段,B
因为值只是列出,因为它是 12 个值的数组。有人可以详细解释一下吗?
c - 在 C 中作为参数传递的复合文字指针
按值传递强制转换指针在C中是否有效?如果不是,为什么这有效?
输出:
在第一个测试中,创建了一个结构,设置了值,并将地址传递给 print_my_struct_prt()。
在第二个测试中,我只能猜测值 6 和“第二个测试”存储在内存中,并且内存中位置的地址被传递给 print_my_struct_prt()。这个对吗?
除了明显的可读性问题之外,这在 C 中是否可以接受?
c - 复合文字的生命周期
如果复合文字出现在函数体之外,则该对象具有静态存储持续时间;否则,它具有与封闭块关联的自动存储持续时间。
我将这里的“封闭块”解释为“最里面的封闭块”是否正确?(因为如果它不是最里面的,那是什么?) 为什么 gcc 和 clang 表现得好像文字的生命周期是它的封闭函数?
例子:
gcc/clang 在 -O3 处生成的代码:
c - 如何正确地将数组作为函数参数传递?
当我尝试将数组发送到函数时,出现错误。
这是我的最小单元测试程序:
我遇到的问题是
它进入这个功能:
我基本上需要检查直方图函数中的计数器是否为 7,有什么建议吗?