gpt4 book ai didi

compiler-errors - 错误 : invalid conversion from ‘char*’ to ‘char’

转载 作者:行者123 更新时间:2023-12-02 02:16:52 25 4
gpt4 key购买 nike

请耐心等待,我是 C 语言的新手,我正在尝试为 Arduino 编程。我想写一个程序,吐出一个特定长度的数据帧,字节值范围为 0-255。重现错误的最少代码在下面的代码块中。编译时出现以下错误:

sketch_apr09b.cpp: In function ‘char assembleFrame()’:
sketch_apr09b.cpp:9:10: error: invalid conversion from ‘char*’ to ‘char’

现在我的印象是我在虐待“返回框架”,但我就是想不通出了什么问题。

char assembleFrame() {
char frame[] = {
0x61 , 0x62 , 0x63
};
return frame;
}

void setup() {
Serial.begin( 115200 );
};

void loop() {
char frame = assembleFrame();
Serial.print( frame );
}

当我在接收 PC 上运行 hexdump 时,我想看到:

00000000  61 62 63                                          |abc|
00000003

我发现了很多类似的问题,但无法弄清楚我做错了什么。

编辑:到目前为止,这是我想出的,但是收到了错误的数据。我想我正在用它发送指向实际数据的指针。

byte *assembleFrame() {
byte frame[] = { 4 , 'a' , 'b' , 'c' };
return frame;
}

void setup() {
Serial.begin( 115200 );
};

void loop() {
byte *frame = assembleFrame();
Serial.write( frame , frame[ 0 ] );
}

最佳答案

char 类型用于存储单个char(一个字节)。

您的函数定义 char assembleFrame 指定该函数将只返回一个 char,因此当您尝试返回一个 char[]/char * (char 数组/指针),失败。

看起来 Serial.print() 可以处理 char *,它可能需要以 null 结尾(因为它不需要长度说明符)。

char *assembleFrame() {
char frame[] = {
0x61, 0x62, 0x63, 0x00 // null byte to signify end of string
};
return frame;
}

void setup() {
Serial.begin( 115200 );
};

void loop() {
char *frame = assembleFrame();
Serial.print( frame );
}

关于compiler-errors - 错误 : invalid conversion from ‘char*’ to ‘char’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10078095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com