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突然决定做一个memcmp的结构. 那么使用这样的语法是好还是坏? 解决方法
你显示的第二个代码,
WINDOWPLACEMENT wplcmt; memset(&wplcmt,sizeof(WINDOWPLACEMENT)); wplcmt.length = sizeof(WINDOWPLACEMENT); 是不可怕的混淆,低效,冗长,你把这一切都填满了. 第一个代码段, WINDOWPLACEMENT wplcmt = {sizeof(WINDOWPLACEMENT)}; 是,除了混淆,首选方式,除非你想 >花更多的时间不必要地编写更多的代码, 顺便说一句,你使用的混淆名字是什么,wplcmt? 你为什么混淆名字? 你的问题是真实的还是只是拖曳? 干杯&心连心, 编辑:该问题已被编辑.上述问题是针对原来的标题/问题,“这种结构分配有多坏?”.我正在离开我的答案,为评论提供上下文. 编辑2:上下文发生了变化:OP的缺口从“Madman”变为“Coder”.所以,虽然原来是关于“如何eveil”正常代码由“疯子”,现在是关于“是首选…”由“编码器”.嗯,我的意思是,我现在不会在评论中把他称为“疯子”,这是他当时所说的自己,他当时的昵称. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |