繁体   English   中英

无法访问Arduino结构字段。 错误“退出状态1. xxxx未命名类型”

[英]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;定义结构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和C ++ Pre C ++ 11中,您不能将非静态成员初始化为全局变量。

我对Arduino不熟悉,但是下面的代码:

params.test= 2;

...以及其他为结构的成员分配值的其他行(当前已注释掉), 应位于函数内部 也许您在下面定义的Setup()函数?

我认为以前您可以编译如下语句:

int test = 2;

...,因为在这种情况下,“ =”运算符正在初始化变量的值,而不是分配给结构成员

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM