C中字节和字符的区别

ida*_*ika 9 c

我想知道为什么我不能从书中编译一个例子.我在这里简化了示例,以避免从受版权保护的书中发布示例.

#include <stdio.h>

BYTE *data = "data";

int main()
{
     printf("%s", data);
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

用g ++编译时,我得到错误,

error: invalid conversion from 'const char*' to 'BYTE*'
Run Code Online (Sandbox Code Playgroud)

该程序只需用char代替BYTE,但我必须做错事,因为这个例子来自一本书.

请帮助指出问题所在.谢谢.

CB *_*ley 35

BYTE不是C语言或C标准库的一部分,因此它完全依赖于系统是否在仅包含标准stdio.h头文件后定义.

在许多定义BYTE宏的系统上,它通常是一个unsigned char.从转换const char*unsigned char*需要显式类型转换.

  • idazuwaika:使用 gcc -E(仅预处理;不编译、汇编或链接) (2认同)