Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将数组用作“函数”;“转到”;标签_C++_Arrays_Arduino_Goto - Fatal编程技术网

C++ 将数组用作“函数”;“转到”;标签

C++ 将数组用作“函数”;“转到”;标签,c++,arrays,arduino,goto,C++,Arrays,Arduino,Goto,我正在从事一个Arduino项目,想知道是否可以在goto命令中使用数组中的值。基本上,如果我有一个字符串数组,其中每个项对应于代码中的一个标签,那么有没有办法将具有适当索引值的数组作为命令的标签?我只包含了我不完整代码的一部分,希望能帮助大家理解我的观点 int-power=2; 字符串标签[4]={“chip_1”、“chip_2”、“chip_3”、“end”}; 芯片1://标签 功率+=1; 对于(int i=0;i ),在标准C++中不能这样做,但GCC有扩展: #include &

我正在从事一个Arduino项目,想知道是否可以在
goto
命令中使用数组中的值。基本上,如果我有一个字符串数组,其中每个项对应于代码中的一个标签,那么有没有办法将具有适当索引值的数组作为命令的标签?我只包含了我不完整代码的一部分,希望能帮助大家理解我的观点

int-power=2;
字符串标签[4]={“chip_1”、“chip_2”、“chip_3”、“end”};
芯片1://标签
功率+=1;

对于(int i=0;i ),在标准C++中不能这样做,但GCC有扩展:

#include <iostream>

int main()
{
    void *arr[3] = {&&label1, &&label2, &&label3};

    int i;
    for (i = 0; i < 3; i++)
    {
        goto *arr[i];
      ret:;
    }

    // Prints `123`

    return 0;

  label1:
    std::cout << 1;
    goto ret;
  label2:
    std::cout << 2;
    goto ret;
  label3:
    std::cout << 3;
    goto ret;
}
#包括
int main()
{
void*arr[3]={&&label1,&&label2,&&label3};
int i;
对于(i=0;i<3;i++)
{
后藤*arr[i];
ret:;
}
//印刷品'123`
返回0;
标签1:

std::cout你想实现什么?你认为控件一旦点击
goto标签[power],应该去哪里
?基本上,我有几个MCP23017扩展器IC,每个都在各自的引脚上运行基本相同的for循环。我希望能够有一种方法告诉微控制器以特定顺序激活扩展器芯片的for循环。我的计划是拥有一个具有不同标签的阵列,以便我可以更改根据最近使用的标签的顺序,这样就可以根据需要改变循环的顺序。我还没有排除这是不必要的,但是认为尝试是很有趣的。也许你可以使用状态机。而这几乎可以肯定地用C++表示。从语言的角度来看,这很有趣。
switch
语句不够神秘?甚至函数指针数组。。。