【发布时间】:2012-07-01 11:10:25
【问题描述】:
这在 Visual Studio 2010 中不起作用,它给了我以下错误
void main (void)
{
unsigned char* test = "ATGST";
}
编辑 1:我的问题是为什么这适用于嵌入式系统,但不适用于 PC?
但是当我把它改成:
char* test = "ATGST";
它有效。
主要是我使用 C 为嵌入式系统编写代码,并且我使用 Visual Studio 来测试一些功能,因此我不必在微控制器上实时测试它。
我需要解释一下,因为微控制器接受第一个代码。
【问题讨论】:
-
您为什么期望它会起作用?
char和unsigned char是两种不同的类型。 -
@ildjarn hmmmm 实际上 char 和 unsigned char 可能 是同一类型。您可以强制 VS 将 generic char 类型视为 signed char 或 unsigned char。
-
@Adriano : C++ 标准不同意:§3.9.1/1 "Plain
char、signed char和unsigned char是三种不同的类型。" @ xsari3x : 那么那些编译器不符合要求。 -
对于托管(非嵌入式)系统,
void main (void)不正确。 =(嗯,大多数情况下;允许实现允许它,但没有充分的理由这样写。改用int main(void)。对于独立(嵌入式)系统,使用编译器支持的任何东西——很可能是@ 987654332@. -
@Adriano : 从
char到unsigned char的转换必须是隐式的,但是从char*到unsigned char*的转换必须不,就像从@987654337 的转换一样即使int和long大小相同,@ 到long*也不能。
标签: c visual-studio-2010 embedded