The author has 3 posts.
Font size: Small - 100% (Default)  Content converter: No conversion
 
Clicks Replies
1193 2
在使用C语言开发Windows程序时,在很多地方NULL需要进行强制类型转换
巨大八爪鱼
武林盟主 二十一级
Reply
Floor 1 Posted at: 5/23/16 22:23
这是因为在Windows.h头文件中定义NULL宏时会进行语言判断。
如果当前语言是C语言,就把NULL定义为(void *)0,
如果是C++的话就直接定义为0
巨大八爪鱼
武林盟主 二十一级
Reply
Floor 2 Posted at: 5/23/16 22:25
例如在定义窗口类的时候,C语言里面必须写成:
wcex.style = (UINT)NULL;
但C++里面可以直接写:
wcex.style = NULL;

CreateWindow函数也是一样。
C:
hwndCombo = CreateWindow(WC_COMBOBOX, NULL, WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST, 10, 160, 200, (int)NULL, hWnd, NULL, hInst, NULL);
C++:
hwndCombo = CreateWindow(WC_COMBOBOX, NULL, WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST, 10, 160, 200, NULL, hWnd, NULL, hInst, NULL);
巨大八爪鱼
武林盟主 二十一级
Reply
Floor 3 Posted at: 12/29/25 15:41

在C语言里面,推荐空数据直接写0。NULL专门用作空指针,而不是空数据。

例1:

wcex.style = 0;

例2:
hwndCombo = CreateWindow(WC_COMBOBOX, NULL, WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST, 10, 160, 200, 0, hWnd, NULL, hInst, NULL);
Reply the post
Content:
User: You are currently anonymous.
Captcha:
Unclear? Try another one.
(Shortcut key: Ctrl+Enter)
Post Information
Clicks: 1193 Replies: 2
Author: 巨大八爪鱼
Last reply: 巨大八爪鱼
Last reply time: 12/29/25 15:41
Bar Good Posts
Announcements