Fork()定义变量

时间:2014-02-09 04:46:17

标签: c fork

我正在尝试实现下面的代码,但它在这里给我错误:

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);

我该如何解决这个问题?

2 个答案:

答案 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");
    

请参阅Why can't variables be declared in a switch statement?

答案 1 :(得分:1)

看起来您正在使用C编译器进行编译,但使用C++语法。

试试这个:

{
    char **lines = tokenizer(buffer, "\n");
    free(lines);
}

作为注释 - 如果您尝试共享变量并从子进程填充变量 - 这将无效。