我使用c线程。
我想使用字符串参数。
在我的来源
int main(int argc, char **argv){
pthread_t thread[1];
pthread_create(&thread[0], NULL, thread_A, (void *) argv[0]);
pthread_join(thread[0], NULL)
}
void * thread_A(void * arg){
char argv[100] = {0};
strcpy(argv, (char *) arg);
}
comfile时这个 像这样的警告
pthread.h:225:12:注意:预期' void *(*)(void *)'但参数的类型为' void *(*)(char **)'
所以我使用(void *)& argv [0]。但这也是错误。
我可以尝试什么?
答案 0 :(得分:3)
否则
pthread_create(&thread[0], NULL, thread_A, (void *) argv[0]);
甚至没有演员
pthread_create(&thread[0], NULL, thread_A, argv[0]);
如果你想传递一个字符串作为参数,那么会很好。但是 警告你正在看
pthread.h:225:12:注意:预期
void * (*)(void *)
但参数类型为void * (*)(char **)
不是在讨论第四个参数(线程函数的参数),它是关于第三个参数: 功能指针。在这种情况下,表示您传递的功能有 这个签名:
void *thread_A(char **arg);
当它期待
时void *thread_A(void *arg);
您发布的代码未生成您发布的警告,我认为代码是您
实际上使用声明thread_A
作为void * (*)(char **)
而不是void * (*)(void*)
。所以检查
你仔细编码。
所以你正在寻找的真实演员将是
pthread_create(&thread[0], NULL, (void * (*)(void*)) thread_A, argv[0]);