conflicting declaration 'typedef uint8_t boolean' typedef uint8_t boolean
时间: 2023-06-17 07:06:13 浏览: 121
这错误提示是因为在你的代码中,已经存在了一个名为 `boolean` 的类型定义,而你又试图再次定义一个 `typedef uint8_t boolean`。这样会导致编译器无法确定该使用哪一个定义。
解决方法有两种:
1. 删除你自己定义的 `boolean` 类型定义,直接使用 C++ 中的 `bool` 类型。
2. 将你自己定义的 `boolean` 类型定义改为其他的名称,例如 `my_boolean`。
例如:
```c++
// 使用C++中的bool类型
bool flag = true;
// 定义一个名为my_boolean的类型
typedef uint8_t my_boolean;
my_boolean my_flag = 1;
```
相关问题
conflicting declaration 'uint8_t brightness'
这个错误的原因是 `brightness` 变量被重复定义了。可以将 `brightness` 定义在 `loop()` 函数外面,这样它就不会被重复定义了。修改后的代码如下:
```cpp
#include <FastLED.h>
#define LED_PIN_1 3
#define LED_PIN_2 4
#define LED_COUNT_1 42
#define LED_COUNT_2 42
#define BRIGHTNESS 255
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
CRGB leds_1[LED_COUNT_1];
CRGB leds_2[LED_COUNT_2];
uint8_t brightness = 0;
void setup() {
FastLED.addLeds<LED_TYPE, LED_PIN_1, COLOR_ORDER>(leds_1, LED_COUNT_1);
FastLED.addLeds<LED_TYPE, LED_PIN_2, COLOR_ORDER>(leds_2, LED_COUNT_2);
FastLED.setBrightness(BRIGHTNESS);
}
void loop() {
brightness++;
for (int i = 0; i < LED_COUNT_1; i++) {
leds_1[i] = CHSV(0, 255, brightness);
}
for (int i = 0; i < LED_COUNT_2; i++) {
leds_2[i] = CHSV(60, 255, brightness);
}
FastLED.show();
delay(50);
}
```
这样就可以避免上面提到的错误了。
conflicting declaration of ‘IdsrReturnValue serializeData(IdsSEv, uint8_t*)’ with ‘C’ linkage
这个错误通常是因为在 C++ 代码中使用了 C 语言的函数,导致编译器无法处理函数名的链接。可能的解决方法包括:
1. 在函数声明前加上 extern "C",将函数声明为 C 语言链接规范,例如:
```
extern "C" IdsrReturnValue serializeData(IdsSEv, uint8_t*);
```
2. 将 C++ 代码中的函数改为 C 语言函数,例如:
```
extern "C" IdsrReturnValue serializeData(IdsSEv event, uint8_t* data) {
// function implementation
}
```
3. 通过 ifdef 宏定义来区分 C++ 代码和 C 代码的链接规范,例如:
```
#ifdef __cplusplus
extern "C" {
#endif
IdsrReturnValue serializeData(IdsSEv event, uint8_t* data);
#ifdef __cplusplus
}
#endif
```
这些方法可能需要根据具体情况进行调整,但通常可以解决这个错误。