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