这一行代码是什么意思?
#define NAME ((LPCSTR) 5)
如果我定义一个variablesNAME *tmp
,那么就像这样使用它:
((LPCSTR) 5) *tmp;
这个代码是做什么的?
注意: LPCSTR
是typedef __nullterminated CONST CHAR *LPCSTR
这是一个简单的__nullterminated CONST CHAR *
转换,它将5转换为一个字符指针( __nullterminated CONST CHAR *
)
这可能是标准的未定义行为,但有时在现实生活中使用。
正如你所看到的那样,它确实是一个指针,所以你试过了, NAME *tmp;
,不会编译。
鉴于LPCSTR
类型,我猜这是用来加载EXE文件中的资源:
#define MAKEINTRESOURCE(x) ((LPCTSTR)(x)) // in windows.h #define IDR_FOO 1 // usually in IDE-generated resources.h HRSRC res = FindResource(NULL, MAKEINTRESOURCE(IDR_FOO), MAKEINTRESOURCE(IDR_FOO));
这在WinAPI应用程序中是司空见惯的,但我从来没有见过有人自己执行投射,而不是使用标准的MAKEINTRESOURCE
宏。