C中字节和字符之间的差异

C中字节和字符之间的差异,c,C,我想知道为什么我不能从书中编译一个例子。我在这里简化了示例,以避免发布版权书籍中的示例 #include <stdio.h> BYTE *data = "data"; int main() { printf("%s", data); return 0; } 该程序的工作原理是简单地用char替换BYTE,但我一定是做错了什么,因为这个例子来自一本书 请帮我指出问题所在。谢谢。字节不是C语言或C标准库的一部分,因此它完全取决于系统是否在仅包含标准stdio.h

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

#include <stdio.h>

BYTE *data = "data";

int main()
{
     printf("%s", data);
     return 0;
}
该程序的工作原理是简单地用char替换BYTE,但我一定是做错了什么,因为这个例子来自一本书


请帮我指出问题所在。谢谢。

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


在许多确实定义了
字节
宏的系统上,它通常是
无符号字符
。从
常量字符*
转换为
无符号字符*
需要显式转换。

问题被标记为
C
,但您说您使用的是
g++
编译器。你使用哪种语言?我使用C++的C部分。不是C++与C兼容,所以如果我只使用C部分,那就不重要了,G++或者GCC?C++不是一个C的超集(缺少一些东西)。但是,这个问题无关紧要。是的,这是您的答案idazwaika-自定义数据类型定义可能会带来麻烦。您可能还需要注意,C标准允许编译器将字符设置为有符号字符或无符号字符,这可能会导致一些意外的结果。谢谢。看起来我必须寻找字节宏的定义。有没有一种方法可以在宏已经被翻译的情况下获得C预处理器的输出?idazuwaika:使用gcc-E(仅预处理;不编译、汇编或链接)
error: invalid conversion from 'const char*' to 'BYTE*'