我正在尝试使用函数和结构将Hex Color String转换为RGB值,然后返回数据
我已经成功完成了大部分工作,但我正在努力了解我的结构和功能应该如何协同工作。
这是我的代码,它返回错误RGB does not name a type
//Define my Struct
struct RGB {
byte r;
byte g;
byte b;
};
//Create my function to return my Struct
RGB getRGB(String hexValue) {
char newVarOne[40];
hexValue.toCharArray(newVarOne, sizeof(newVarOne)-1);
long number = (long) strtol(newVarOne,NULL,16);
int r = number >> 16;
int g = number >> 8 & 0xFF;
int b = number & 0xFF;
RGB value = {r,g,b}
return value;
}
//Function to call getRGB and return the RGB colour values
void solid(String varOne) {
RGB theseColours;
theseColours = getRGB(varOne);
fill_solid(leds, NUM_LEDS, CRGB(theseColours.r,theseColours.g,theseColours.b));
FastLED.show();
}
它错误的一行是:
RGB getRGB(String hexValue) {
有人可以解释我做错了什么以及如何解决它?
答案 0 :(得分:4)
如果您使用的是C编译器(而不是C ++),则必须键入构造结构,或者在使用类型的地方使用struct关键字。
所以它是:
typedef struct RGB {
byte r;
byte g;
byte b;
} RGB;
然后:
RGB theseColours;
或
struct RGB {
byte r;
byte g;
byte b;
};
然后:
struct RGB theseColours;
但是,如果您使用的是C ++编译器,那么如果您告诉我们错误发生在哪一行,它可能会有所帮助。