我正在尝试实现下面的代码,但它在这里给我错误:
char **lines = tokenizer(buffer, "\n"); //use of undeclared identifier 'lines'
free(lines); //use of undeclared identifier 'lines'
实际代码:
int child = fork();
switch (child) {
case 0 :
// child process
char **lines = tokenizer(buffer, "\n");
free(lines);
我该如何解决这个问题?
答案 0 :(得分:1)
case
声明后不允许立即声明。有三个可能的修复:
将case
括在case 0: { char **line = ...}
后的代码中。
将声明移至switch
:
switch (child) {
char **lines;
case 0:
lines = tokenizer(buffer, "\n");
或者,令人惊讶的是,只需在;
语句后添加额外的case
:
switch (child) {
case 0:
;
char **lines = tokenizer(buffer, "\n");
答案 1 :(得分:1)
看起来您正在使用C
编译器进行编译,但使用C++
语法。
试试这个:
{
char **lines = tokenizer(buffer, "\n");
free(lines);
}
作为注释 - 如果您尝试共享变量并从子进程填充变量 - 这将无效。