这行代码是什么意思?

#define NAME ((LPCSTR) 5)

如果我定义了一个变量NAME *tmp,则按如下方式使用它:
((LPCSTR) 5) *tmp;

那密码是干什么的?
注:LPCSTRtypedef __nullterminated CONST CHAR *LPCSTR

最佳答案

这是一个简单的转换,它将5转换为字符指针(__nullterminated CONST CHAR *
按照标准,这可能是未定义的行为,但有时在现实生活中使用。
要在您的机器上寻址特定的物理地址-例如,内核必须这样做来配置卡、onbard芯片等…
在参数或返回值中发送特殊值。例如,调用通常在第二个参数中需要一个指针,但如果传递“5”,则表示其他内容。
如您所见,它实际上是一个指针,因此您所尝试的NAME *tmp;不会编译。

关于c - 什么是#define NAME((LPCSTR)5)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12598577/

10-12 18:29