编辑以符合 C++ 标记的删除并安抚嵌入的标记。
首先,手头的问题是,您试图将char[]
文字传递给unsigned char*
. 您不能真正将 char 与unsigned
or等同signed
起来,在这方面它有点特别。此外,字符串文字被赋予唯一的存储空间,并且永远不应该被修改。如果您正在处理字符,则需要使用可以衰减到的标准 char*
。char[]
你可以强行施放它,但我不喜欢推荐这样的东西。正如评论之一指出的那样,这样做是安全的。实际上,它实际上是真正安全的稀有事物之一。
但是对于 reinterpret_casting 提供足够的限定条件的严格答案的空间太小了,这基本上是在告诉编译器你知道你在做什么。这可能非常危险,只有在您对手头的问题非常确定时才应该这样做。char 通常只是通用的,甚至没有签名或未签名。由于 unsigned char 的范围比 char 更大,并且通常 char 使用有符号 char 的正子集来描述字符(或任何其他可以适合的数据),如果您的数据不在扩展的正范围内,您重新出发。但是,一定要安全地符合环境和代码。
关于入口点功能 - 符合编辑
由于已经确定您在嵌入式系统上工作,这意味着您的程序很可能不需要返回任何内容,因此它可以保留void main()
(也可能是它需要给定嵌入式系统指定的非常不同的返回,OP 最了解他的系统所施加的要求)。在很多情况下,你可以保持 void 的原因是因为没有环境/操作系统可以安抚,没有人可以交流。但是嵌入式系统也可能非常专业,最好通过详细研究给定平台来满足所施加的要求(如果有的话)。