无法访问 Arduino 结构字段。错误 "exit status 1. xxxx does not name a type"
Cannot access Arduino struct fields. ERROR "exit status 1. xxxx does not name a type"
我无法在使用结构时编译 Arduino IDE。我定义了一个名为 params
的简单结构来保存我的参数。
当我尝试使用“.”访问结构 params
的字段时它抛出这个错误
exit status 1
'params' does not name a type
我已经搜索并尝试了很多不同的东西。我尝试将定义放入一个单独的 .h 文件中,并尝试将我的草图放入一个 .cpp 文件中而不是使用 .ino,但我无法使这个结构工作!
我很确定语法是正确的,它应该在 C++ 中工作。我不明白 Arduino IDE 给我这个错误!
这是我的 .ino 文件顶部的代码。如果您能帮助我,将不胜感激,谢谢!
#include <MIDI.h>
#include <Wire.h>
#include <EEPROM.h>
// address for Terabee laser sensor connnected via USB
#define ADDRESS 0x55
const int num_sensors = 3;
typedef struct { // holds all free parameters (for presets)
int test;
int reverse[num_sensors];
int active[num_sensors];
int sensor_range[num_sensors];
int cc_num[num_sensors];
int channel[num_sensors];
int default_value[num_sensors]; // for rubber-band mode
int min_value[num_sensors];
int max_value[num_sensors];
} parameters;
// Created and binds the MIDI interface to the default hardware Serial port
MIDI_CREATE_DEFAULT_INSTANCE();
parameters params;
params.test= 2; // COMPILER THROWS ERROR ON THIS LINE!!!!!!!!!
//params.cc_num = {22, 23, 24};
//params.reverse = {false, false, false};
//params.sensor_range = {150, 150, 150}; //upper limit (how far shall the hand go?)
//params.default_value = {64, 64, 64}; // rubber-band defaults for the 3 sensors
//params.min_value = {0, 0, 0};
//params.max_value = {127, 127, 127};
void setup() { [....]
我正在使用全局变量,我不知道这是否是个好主意,但我是 Arduino 的新手,目前它工作正常,仅添加结构会产生所有问题。
此外,只需定义带有 parameters params;
的结构即可编译。尝试访问字段时出现错误,例如 params.test = 2;
移动函数中的代码并调用它:
void test() {
params.test= 2;
params.cc_num = {22, 23, 24};
params.reverse = {false, false, false};
params.sensor_range = {150, 150, 150};
params.default_value = {64, 64, 64};
params.min_value = {0, 0, 0};
params.max_value = {127, 127, 127};
}
在 C++11 之前的 C 和 C++ 中,您不能将非静态成员初始化为全局变量。
我对Arduino不熟悉,但是代码如下:
params.test= 2;
...以及所有其他(当前已注释掉)为结构成员赋值的行,应该在函数内。也许是您在下面定义的 Setup() 函数?
我认为以前您可以编译如下语句:
int test = 2;
... 因为在这种情况下,'=' 运算符是 初始化 变量的值,而不是 分配 一个值结构成员
我无法在使用结构时编译 Arduino IDE。我定义了一个名为 params
的简单结构来保存我的参数。
当我尝试使用“.”访问结构 params
的字段时它抛出这个错误
exit status 1
'params' does not name a type
我已经搜索并尝试了很多不同的东西。我尝试将定义放入一个单独的 .h 文件中,并尝试将我的草图放入一个 .cpp 文件中而不是使用 .ino,但我无法使这个结构工作!
我很确定语法是正确的,它应该在 C++ 中工作。我不明白 Arduino IDE 给我这个错误!
这是我的 .ino 文件顶部的代码。如果您能帮助我,将不胜感激,谢谢!
#include <MIDI.h>
#include <Wire.h>
#include <EEPROM.h>
// address for Terabee laser sensor connnected via USB
#define ADDRESS 0x55
const int num_sensors = 3;
typedef struct { // holds all free parameters (for presets)
int test;
int reverse[num_sensors];
int active[num_sensors];
int sensor_range[num_sensors];
int cc_num[num_sensors];
int channel[num_sensors];
int default_value[num_sensors]; // for rubber-band mode
int min_value[num_sensors];
int max_value[num_sensors];
} parameters;
// Created and binds the MIDI interface to the default hardware Serial port
MIDI_CREATE_DEFAULT_INSTANCE();
parameters params;
params.test= 2; // COMPILER THROWS ERROR ON THIS LINE!!!!!!!!!
//params.cc_num = {22, 23, 24};
//params.reverse = {false, false, false};
//params.sensor_range = {150, 150, 150}; //upper limit (how far shall the hand go?)
//params.default_value = {64, 64, 64}; // rubber-band defaults for the 3 sensors
//params.min_value = {0, 0, 0};
//params.max_value = {127, 127, 127};
void setup() { [....]
我正在使用全局变量,我不知道这是否是个好主意,但我是 Arduino 的新手,目前它工作正常,仅添加结构会产生所有问题。
此外,只需定义带有 parameters params;
的结构即可编译。尝试访问字段时出现错误,例如 params.test = 2;
移动函数中的代码并调用它:
void test() {
params.test= 2;
params.cc_num = {22, 23, 24};
params.reverse = {false, false, false};
params.sensor_range = {150, 150, 150};
params.default_value = {64, 64, 64};
params.min_value = {0, 0, 0};
params.max_value = {127, 127, 127};
}
在 C++11 之前的 C 和 C++ 中,您不能将非静态成员初始化为全局变量。
我对Arduino不熟悉,但是代码如下:
params.test= 2;
...以及所有其他(当前已注释掉)为结构成员赋值的行,应该在函数内。也许是您在下面定义的 Setup() 函数?
我认为以前您可以编译如下语句:
int test = 2;
... 因为在这种情况下,'=' 运算符是 初始化 变量的值,而不是 分配 一个值结构成员