【发布时间】:2013-08-12 22:51:56
【问题描述】:
我有这个 void 函数,带有指向我的线程的指针。当我去编译时,我收到警告:“控制到达非无效函数的结尾”。如果我这样做了
void mythread (void *arg)
函数 i 将解决编译器给出的警告,但会得到一个新的警告,上面写着:
TA.c:50:2: warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type [enabled by default]
然后,我将return 0; 放在“mythread”函数的末尾,然后编译。但我不确定这样做是否正确?
我正在尝试学习 POSIX 系统服务编程。我不知道该怎么办。
建议?我应该尝试输入强制转换参数 3 吗?如何编译我的程序并获得零警告?
#include <limits.h>
#include <pthread.h>
#include <stdio.h>
void *mythread (void *arg)
{
printf("This my Thread Maybe...\n");
}
int main()
{
pthread_t mythread_id;
pthread_attr_t mythread_attr;
size_t stack_size;
int detachstate;
pthread_attr_init (&mythread_attr);
pthread_attr_getdetachstate(&mythread_attr, &detachstate);
if(detachstate == PTHREAD_CREATE_DETACHED)
{
printf("Current Deteached state is Detached\n");
}
else
{
printf("Current Detached state is Joinable\n");
}
pthread_attr_setdetachstate (&mythread_attr, PTHREAD_CREATE_DETACHED);
pthread_attr_getdetachstate (&mythread_attr, &detachstate);
if(detachstate == PTHREAD_CREATE_DETACHED)
{
printf("NEW DETACHED STATE is determined to be deteched\n");
}
else
{
printf("NEW DETACHED STATE is Determine to be Joinable\n");
}
pthread_attr_getstacksize (&mythread_attr, &stack_size);
printf ("Default stack size is %d; minimum is %d\n", stack_size, PTHREAD_STACK_MIN);
pthread_attr_setstacksize (&mythread_attr, PTHREAD_STACK_MIN*2);
pthread_attr_getstacksize (&mythread_attr, &stack_size);
printf("NEW stack size is %d\n", stack_size);
pthread_create (&mythread_id, &mythread_attr, mythread, 0);
return 0;
}
【问题讨论】:
-
这里的每个问题都在寻找编码建议。你能把你的标题更具体吗?
-
感谢格式编辑。是的,我知道,臭名昭著的标题。我尝试了 5 个不同的标题,只有一个成功了。不确定是否必须通过网站破解标题来提出一个简单的问题。
-
那么,我如何将其标记为已解决? (感谢大家的帮助)
-
您可以通过单击旁边的勾号来标记对您帮助最大的答案 - 请参阅 meta.stackexchange.com/questions/5234
标签: c unix posix gcc-warning