C语言中byte和char的区别

16

我想知道为什么我无法编译一本书中的例子。我在这里简化了例子,以避免发布受版权保护的书籍示例。

#include <stdio.h>

BYTE *data = "data";

int main()
{
     printf("%s", data);
     return 0;
}

使用g++编译时,我遇到了错误:

error: invalid conversion from 'const char*' to 'BYTE*'

这个程序通过简单地将BYTE替换为char来工作,但是我一定做错了什么,因为这个例子来自一本书。

请帮忙指出问题。谢谢。


1
这个问题标记了C,但是你说你正在使用g++,它是一个C++编译器。你正在使用哪种语言? - CB Bailey
2
我正在使用 C++ 中的 C 部分。C++ 不是向后兼容 C 吗?因此,如果我仅使用 C 部分,那么使用 g++ 还是 gcc 并不重要。 - idazuwaika
2
C++并不是C的超集(有一些东西缺失了)。然而,对于这个问题来说这并不重要。 - rsaxvc
1个回答

46

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

在许多定义了 BYTE 宏的系统中,它通常是一个 unsigned char。从 const char* 转换为 unsigned char* 需要显式转换。


没错 - 这就是你要的答案 idazwaika - 自定义数据类型定义可能会引起问题。 - ChrisBD
您可能还需要注意,C标准允许编译器将char声明为signed char或unsigned char,这可能会导致一些意外的结果。 - Tim Kryger
谢谢。看起来我得去寻找 BYTE 宏的定义。有没有一种方法可以获得 C 预处理器的输出,其中宏已经被翻译了呢? - idazuwaika
2
idazuwaika:使用gcc -E(仅预处理;不编译、汇编或链接) - eyalm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接