我如何#define一个unsigned char*字符串?

Deh*_*ion 6 c signedness unsigned-char c-preprocessor

我在我的代码中有以下定义

#define PRODUCTNAME     "SomeName"
Run Code Online (Sandbox Code Playgroud)

我想用函数发送它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 ")"
Run Code Online (Sandbox Code Playgroud)

我应该创建const变量并在程序启动时连接它们而不是在这里使用定义吗?

thu*_*eys 12

这应该工作:

#define PRODUCTNAME     ((const unsigned char *)"SomeName")
Run Code Online (Sandbox Code Playgroud)

  • 我相信这是我第一次看到一个包含3个或更多downvotes的帖子,这些帖子在编辑后都被删除了.棒极了. (8认同)
  • 永远不要将字符串文字赋值给非常量指针 (5认同)
  • 非const是正确的,因为字符串文字不是`const`.但它暗示你可以修改它,你不能. (2认同)
  • 应该是徽章! (2认同)