struct { int iMyInt; char cMyChar; double dCoordinates[128];} s_t;
我的方法是这样做:
s_t myStruct = { 0 };
我的同事改为建议这种做法:
s_t myStruct = { };
他指出我的方法在两部分 *** 作中初始化单个元素,然后初始化其余元素,而他的方法在一个部分 *** 作中初始化整个结构,这个 *** 作更快,更有效.
这是真的,如果是这样的话,所有编译器优化级别的情况总是如此(即:编译器是否会解决这个问题并为我优化它)?
谢谢.
解决方法 首先,您发布的代码无效:您应该声明该结构类型如下struct s_t { int iMyInt; char cMyChar; double dCoordinates[128];};
这就是说:在你的具体情况下,两种方法是相同的,一切都是零.对于使用任何上述成员和/或数组元素的通用测试代码,在-O3和偶数-O0处没有区别(在-O0,它甚至在两种情况下都调用整个结构上的memset).
s_t obj = {0};movq %rcx,%rdimovl %eax,%esicallq memsets_t obj = {};movq %rcx,%esicallq memset总结
以上是内存溢出为你收集整理的C – 初始化结构的有效方法全部内容,希望文章能够帮你解决C – 初始化结构的有效方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)