我有这个功能正常:
void testeStatic2()
{
static char elementos[8][128];
const int qtdCol = 128;
const int qtdLn = 8;
printf("\n");
char* pLinhas[qtdCol];
int i = 0;
for (i = 0; i < qtdLn; i++)
pLinhas[i] = elementos[i];
Fila_Init(&TELIT_dadosRecebidos, qtdLn, qtdCol, pLinhas);
}
我无法以更简单的方式重新创建此代码,因此,如果可能的话,忽略其余的代码,问题是尽管它有效,但如果我取出printf("\n")
它会让我执行时间错误。有人有任何想法吗?
...谢谢
答案 0 :(得分:0)
只需将pLinhas
设为static
即可使其正常工作。我想问题是在函数范围结束后引用不存在的指针。所以,这段代码经过测试并且有效!
void FilaInit()
{ int i = 0;
static char elementos[8][128];
static char * pLinhas[8];
for (i = 0; i < 8; i++)
pLinhas[i] = &elementos[i][0];
Fila_Init(&TELIT_dadosRecebidos, 8, 128, pLinhas);
}
一个细节是pLinhas是一个指向char的指针数组,char是一个指向字符串的指针数组。它的大小是8 * 4字节。另一点是我必须使用常量整数来声明pLinhas。
我想强调这个解决方案......我已经搜索了很多这种结构化数据。如果您不能使用malloc(如嵌入式应用程序),但需要创建多个不同大小的队列,那将非常有趣。
对于那些想要使用此解决方案的人,我在Google代码上创建了这个项目:Qwoma。很高兴收到这个简单项目的评论家和想法。
谢谢大家!