在这里,我将一个位数组传递给另一个函数。
因为数组太大,所以在编译时会抛出“数据段太大”的错误。
我新编辑了代码。但是,错误:数据段过大仍然存在。
这是代码:

char TxBits[]={0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,
               0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
               0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,1,0,1,1,0,1,1,1,0,
               0,0,0,1,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,0,1,0,1,
               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
               0,0,0,0,0,0,0,0,0,0,0,0,0,0};

 int nTxBits = sizeof(TxBits)/sizeof(char);

void data(char *TxBits,int nTxBits, int loopcount)
{

  int i;

  for (i = 0;i < nTxBits;i++)
  {

    gpio=TxBits[i];
    wait(loopcount);
  }

}

所以,我正在考虑将数组中的位转换为字节并传递给函数。我能知道怎么做吗?接受建议。
请回复

最佳答案

从你的代码中,我认为你正在使用一些微控制器,所以我不确定你是否认真对待C++标签。如果你是,这是一个C++风格的解决方案,它使用std::bitset(专门处理需要较少空间的位的容器):

std::bitset<134> foo (std::string("01010101010101010101010100101010101010101010101010010101010101010101010101001010101010101010101010100101010101010101010101010100000000"));

void data(const std::bitset& bitset, int loopcount) {
  // if C++11
  for (auto& bit : foo) {
    gpio = bit;
    wait(loopcount);
  }

  // if C++98
  // for (int i = 0; i<bitset.size(); i++) {
  //   gpio = foo[i];
  //   wait(loopcount);
  // }
}

关于c++ - 编译时数据段太大,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35450532/

10-11 16:12