C: PThread_create 解析 Char[] 参数到函数

Sim*_*mon 5 c

大家好,

\n\n

我有这个方法:

\n\n
void *readFileLocal(char filename[]){\n       .....\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在我想在线程中启动这个方法:

\n\n
char input[strlen(argv[1])];\nstrcpy(input,argv[1]);\npthread_t read,write;\npthread_create(&read, NULL, &readFileLocal, &input);\n
Run Code Online (Sandbox Code Playgroud)\n\n

但在编译过程中它给出了这个警告:

\n\n
file.c:29: warning: passing argument 3 of \xe2\x80\x98pthread_create\xe2\x80\x99 from incompatible pointer type\n
Run Code Online (Sandbox Code Playgroud)\n\n

/usr/include/pthread.h:227: 注意:预期 \xe2\x80\x98void * (*)(void *)\xe2\x80\x99 但参数类型为 \xe2\x80\x98void * (*)(字符 *)\xe2\x80\x99

\n\n

如何在没有此警告的情况下通过 pthread_create 将 char 数组解析为我的函数?\n感谢您的帮助

\n

Pab*_*ruz 3

只需使用这个:

pthread_create(&read, NULL, readFileLocal, input);
Run Code Online (Sandbox Code Playgroud)

并考虑将函数的签名更改为:

void *readFileLocal(void *fileName) { }
Run Code Online (Sandbox Code Playgroud)

当您传递一个指向函数的指针(就像您在readFileLocal参数中使用的指针)时,您不需要将 &.

另外,当你有一个数组(就像input你的情况一样)时,你不需要,&因为在C数组中已经可以用作指针。