c++ - const char* 与字符串文字的使用

标签 c++ linux string char constants

我正在使用一个外部 Modbus 库(用 C 语言编写),通过串行连接从 Linux 计算机连接到微 Controller 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' 添加到初始值设定项列表的末尾。也许在某些编译器版本中,内存中的数据后面恰好有一个零,但您不能依赖这个事实。

关于c++ - const char* 与字符串文字的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57723720/

相关文章:

r - 提取带有名称的向量的单词

python - 将字符串拆分为两个单词的列表,重复最后一个单词

c# - 强制在声明中使用接口(interface)而不是具体实现 (.NET)

C++ : How to initialize an object that uses two header files?

c++ - 如何访问嵌套的plist目录cocos2dx?

asp.net - Javascript 拒绝调用 ActiveX 方法,同意调用另一个方法

Linux Expect SFTP + 放置文件

linux - 按需加载/卸载 ELF 部分?

java - 在 Java 中重复使用字符串中的字符的更好方法

regex - 如何使用python脚本在linux中压缩多个文件?