【发布时间】:2013-03-21 03:36:19
【问题描述】:
我的代码中有以下定义
#define PRODUCTNAME "SomeName"
我想用函数com_reply(unsigned char* msg, uint16_t lenght)发送它。
现在我收到一条警告,指出我的论点在符号上有所不同。我知道问题出在哪里,也知道为什么com_reply 使用unsigned char* 而不是char*,我只想知道:
如何将我的字符串定义为unsigned char*,这样我就可以在整个程序中使用它,而不会在各处收到警告。
编辑:
严格来说,我这里有多个定义,主要原因是有一个 BANNER 定义,其中包含其他几个定义,如下所示:
#define PRODUCTNAME "SomeName"
#define PRODUCTDATE "2013-03-30"
#define BANNER PRODUCTNAME " (" PRODUCTDATE ")"
我应该创建 const 变量并在程序开始时将它们连接起来,而不是在这里使用定义吗?
【问题讨论】:
-
为什么不用
const char* PRODUCTNAME = "SomeName"或类似的? (不相关,但#define 对此有很多缺点。) -
我不知道这有多符合标准,但是呢:
(const unsigned char*)"SomeName" -
出于好奇,
com_reply函数有什么作用?看起来它实际上不应该是一个字符串,而是一个指向 0 到 255 之间的数字的指针。 -
com_reply用于发送各种东西,主要是二进制数据,有时是人类可读的字符串。这就是为什么需要unsigned char* -
com_reply是否声明了它的参数const?如果没有,您将收到一条警告发送。
标签: c c-preprocessor unsigned-char signedness