50、编程知识与16位Windows编程示例解析

编程知识与16位Windows编程示例解析

1. 代码示例与警告的重要性

在编程过程中,我们会遇到各种各样的代码和潜在问题。例如下面这段汇编代码:

mov ecx, DWORD PTR R$[rsp]
mov DWORD PTR [rax], ecx
mov rax, QWORD PTR rt$[rsp]
mov ecx, DWORD PTR G$[rsp]
mov DWORD PTR [rax+4], ecx
mov rax, QWORD PTR rt$[rsp]
mov ecx, DWORD PTR B$[rsp]
mov DWORD PTR [rax+8], ecx
add rsp, 56
; RAX didn't change down to this point
ret
0
create_color ENDP

优化后的MSVC 2015 x64会内联函数,但生成的代码可能会崩溃。另外,像下面这个C语言函数:

uint32_t LPHM_u32_hash(void *key)
{
    jenkins_one_at_a_time_hash_u32((uint32_t)key);
}

这里缺少返回语句,编译器可能会在这一点上默默地不做任何处理。这种未被注意到的错误可能会带来很大的麻烦。所以,编程时警告非常重要,要使用 -Wall 等编译选项。同时,“霰弹枪式调试”(shotgun debugging)不可取,因为这样可能会让错误被忽略。

2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值