繁体   English   中英

const char *与字符串文字的使用

[英]The use of const char* vs. string literals

我正在使用外部C语言编写的Modbus库,通过串行连接从Linux机器连接到Microntroller Modbus从站。 我还使用wxWidgets在Linux机器上创建应用程序,该机器在后台运行Modbus主站。

Modbus功能之一接受Modbus主站应连接到的串行端口的名称。 在我的Linux机器上,是/dev/ttyS4 在我使用的函数中,参数类型定义为const char* 当我将参数作为字符串文字传递时,即"/dev/ttyS4" ,该函数可以正常工作。 但是,当我第一次定义变量时,如下所示:

const char mbPort[] = {'/', 'd', 'e', 'v', '/', 't', 't', 'y', 'S', '4'};

然后将该变量传递给函数,它将不起作用-我不确定为什么会这样。 在Windows中以类似方式传递变量时,它可以正常工作。 在Windows中,我的mbPort变量如下所示:

const char mbPort[] = { '\\\\', '\\\\', '.', '\\\\', '\\\\', 'C', 'O', 'M', '5' };

所以现在我不确定这是我的代码中是否有错误,还是这与我使用的操作系统有关。 这是我正在使用的Modbus函数的声明:

modbus_t* modbus_new_rtu(const char *device, int baud, char parity, int data_bit, int stop_bit);

任何帮助将不胜感激。

将值'\\0'添加到初始化程序列表的末尾。 也许在某些编译器版本中,内存中的数据之后恰好为零,但是您不能依靠这一事实。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM