2014-02-21 77 views
1

我收到了我编写的代码的以下错误。 对于参数1int pushInBuffer(char*),无法将char (*)[10][256]转换为char*。 我不知道我应该引入pushInBuffer()什么类型的输入参数。函数的输入参数中的不正确类型转换

void *consumer(void *var) { 
    int i; 
    //char line[256]; 
    for(;;) { 
     if(popFromBuffer(&buf))  
      fprintf(stderr, "Error Consuming"); 
     else { 
      for(i = 0; i < BUFFERSIZE; i++) 
       fputs(buf[i], out); 
     } 
    } 
    pthread_exit(0); 
} 

int popFromBuffer(char *item) { // How do I give a 2_D array as input parameter and access in the function. 
    sem_wait(&fullCount);   
    sem_wait(&mutex);  
    *item = buf[removePointer][256]; 
    buf[removePointer++][256] = -1; 
    removePointer = removePointer % BUFFERSIZE; 

    sem_post(&mutex);  
    sem_post(&emptyCount);  

    return 0; 
} 
+0

告诉你如何调用'pushInBuffer'和pushInBuffer的'类型“论点。 – ouah

+0

@ouah对不起,我意识到并且只是编辑了这个问题。 – denizen

+0

你不显示'buf'变量的声明仍然不完整。 – ouah

回答

1

注意:如果您将buf作为全局使用,则不需要将它从函数传递到函数。

//我如何给2_D数组作为输入参数并在函数中进行访问。

int popFromBuffer(char *item); 

变化

int popFromBuffer(char* item[]); 

buf[BUFFERSIZE][256] change to char* buf[BUFFERSIZE]; 

,或者你可以用结构做

typedef struct _BUF 
{ 
buf[BUFFERSIZE][256]; 
}BUF; 

int popFromBuffer(BUF b); 
{ 
/* access buffer */ 
b.buf 

} 

int main() 
{ 
BUF b ={0}; 
popFromBuffer(b); 
return 0; 
} 
相关问题