这行代码是什么意思?
#define NAME ((LPCSTR) 5)如果我定义了一个变量NAME *tmp,那么就像这样使用它:
((LPCSTR) 5) *tmp;这段代码是做什么的?
注:LPCSTR为typedef __nullterminated CONST CHAR *LPCSTR
发布于 2012-09-26 17:45:48
这是一个简单的强制转换,它将5转换为字符指针(__nullterminated CONST CHAR *)
根据标准,这可能是未定义的行为,但有时会在现实生活中使用。
正如您所看到的,它实际上是一个指针,所以您尝试过的NAME *tmp;不能编译。
发布于 2014-01-03 09:13:34
给定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宏而自己执行强制转换。
https://stackoverflow.com/questions/12598577
复制相似问题