C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 是否首选/可以使用结构初始化({…})超过memset等?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
码:
WINDOWPLACEMENT wplcmt = {sizeof(WINDOWPLACEMENT)};

看起来比以下更清洁:

WINDOWPLACEMENT wplcmt;
memset(&wplcmt,sizeof(WINDOWPLACEMENT));
wplcmt.length = sizeof(WINDOWPLACEMENT);

这个东西的汇编输出也很不错,对于更长的结构,MSVC甚至使用memset而不是xor eax,eax和mov.从标准的角度来看,它也看起来不错.但是我仍然担心结构不紧密的边框情况,说#pragma pack(128),windows突然决定做@L_471_1@memcmp的结构.

那么使用这样的语法是好还是坏?
使用这种初始化是很好的做法吗?

解决方法

显示的第二个代码,
WINDOWPLACEMENT wplcmt;
memset(&wplcmt,sizeof(WINDOWPLACEMENT));
wplcmt.length = sizeof(WINDOWPLACEMENT);

是不可怕的混淆,低效,冗长,你把这一切都填满了.

一个代码段,

WINDOWPLACEMENT wplcmt = {sizeof(WINDOWPLACEMENT)};

是,除了混淆,首选方式,除非你想

>花更多的时间不必要地编写更多的代码,
读者会花更多的时间阅读并不必要地分析你的详细代码,
>执行效率降低,
>提供bug入口门户.

便说一句,你使用的混淆名字是什么,wplcmt?

你为什么混淆名字?

你的问题是真实的还是只是拖曳?

干杯&心连心,

编辑:该问题已被编辑.上述问题是针对原来的标题/问题,“这种结构分配有多坏?”.我正在离开我的答案,为评论提供上下文.

编辑2:上下文发生了变化:OP的缺口从“Madman”变为“Coder”.所以,然原来是关于“如何eveil”正常代码由“疯子”,现在是关于“是首选…”由“编码器”.嗯,我的意思是,我现在不会在评论中把他称为“疯子”,这是他当时所说的自己,他当时的昵称.

大佬总结

以上是大佬教程为你收集整理的c – 是否首选/可以使用结构初始化({…})超过memset等?全部内容,希望文章能够帮你解决c – 是否首选/可以使用结构初始化({…})超过memset等?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。