【发布时间】:2011-02-06 03:17:55
【问题描述】:
我创建了一个结构数组。我试图通过 pthread_create 将此数组中的一个元素传递给线程。我收到以下错误(它们是针对我在 for 循环中的 2 个 pthread_create 调用):
/../a2/main.cpp|117|error: invalid conversion from ‘void (*)(serverDataStruct*)’ to ‘void* (*)(void*)’|
/../a2/main.cpp|117|error: initializing argument 3 of ‘int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)’|
我看了一遍,似乎我的语法是正确的。我将在下面发布我的代码。有人可以帮我吗?
struct serverDataStruct
{
};
struct clientDataStruct
{
};
void serverFunc(serverDataStruct *serverData);
void clientFunc(int *ticketNum);
struct serverDataStruct serverDataArray[MAX_NUM_SERVERS];
struct clientDataStruct clientDataArray[MAX_NUM_CLIENTS];
int main ( )
{
for(int i = 0; i < numServers; i++) //create servers
{
pthread_create( &serverTID[i], NULL, serverFunc, (void*) &serverDataArray[i]); //PROBLEM LINE*****************************************************************
}
for(int i = 0; i < numCustomers; i++)
{
pthread_create( &clientTID[i], NULL, clientFunc, (void*) &clientDataArray[i]); //PROBLEM LINE*****************************************************************
}
}
void *serverFunc(void *serverData)
{
}
void *clientFunc(void *clientData)
{
}
【问题讨论】:
-
你应该添加4个空格让它看起来更好
-
如果您 (1) 将代码缩小到 10 行左右并给出相同的错误,并且 (2) 使用
{}按钮格式化你的代码整齐。