![](/img/trans.png)
[英]Error: could not convert '<brace-enclosed initializer list>()' from '<brace-enclosed initializer list>' to 'struct'
[英]C++ Function error — could not convert brace-enclosed initializer list to char*
C ++的新手,更熟悉MATLAB和Arduino。 我正在尝试创建(读取:修改别人的代码)C ++函数以通过串行发送字符数组-它正在与C库(rs232.h)交互。 在函数初始化中初始化模式的默认值(bits / baud / parity数组)时,我一直收到此错误。 不知道我是否要尝试执行不支持的操作,如果可以,我可以拆分变量。 在此先感谢您的帮助。
IDE:代码::块
编译器:MinGW-g ++ / GCC 7.3
错误:
error: could not convert '{'8', 'N', '1', 0}' from '<brace-enclosed initializer list>' to 'char*'
码:
#include <stdlib.h>
#include <stdio.h>
#include <Windows.h>
#include "rs232.h"
#include <string> /* Probably unnecessary */
bool Write(char (&toWrite)[256], int portNum=3, int bdrate=9600, char mode[]={'8','N','1','\0'})
{
int i, cport_nr = portNum - 1;
if(RS232_OpenComport(cport_nr, bdrate, mode))
{
return false;
}
while(1)
{
RS232_cputs(cport_nr, toWrite);
printf("sent: %s\n", toWrite);
Sleep(1000);
i++;
i %= 2;
}
return true;
}
将默认值放在单独的行中:
bool Write(char (&toWrite)[256], int portNum=3, int bdrate=9600, char *mode=NULL) {
char mode_default[] = {'8','N','1','\0'};
if (mode == NULL) mode = mode_default;
原因:
您不能将默认值与C数组参数一起使用(实际上会衰减到此处的指针)– UnholySheep
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.