错误:
badexit2.c: 在函数‘printfoo’中:
badexit2.c:11: 警告: 格式字符串不是一个字面字符串而且没有待格式化的实参
make[2]:正在离开目录 `/home/panchenji/apue.2e/threads'
make[1]:正在离开目录 `/home/panchenji/apue.2e'
badexit2.c代码:
#include "apue.h"
#include <pthread.h>
struct foo {
int a, b, c, d;
};
void
printfoo(const char *s, const struct foo *fp)
{
printf(s);
printf(" structure at 0x%x\n", (unsigned)fp);
printf(" foo.a = %d\n", fp->a);
printf(" foo.b = %d\n", fp->b);
printf(" foo.c = %d\n", fp->c);
printf(" foo.d = %d\n", fp->d);
}
void *
thr_fn1(void *arg)
{
struct foo foo = {1, 2, 3, 4};
printfoo("thread 1:\n", &foo);
pthread_exit((void *)&foo);
}
void *
thr_fn2(void *arg)
{
printf("thread 2: ID is %d\n",(int)pthread_self());
pthread_exit((void *)0);
}
int
main(void)
{
int err;
pthread_t tid1, tid2;
struct foo *fp;
err = pthread_create(&tid1, NULL, thr_fn1, NULL);
if (err != 0)
err_quit("can't create thread 1: %s\n", strerror(err));
err = pthread_join(tid1, (void *)&fp);
if (err != 0)
err_quit("can't join with thread 1: %s\n", strerror(err));
sleep(1);
printf("parent starting second thread\n");
err = pthread_create(&tid2, NULL, thr_fn2, NULL);
if (err != 0)
err_quit("can't create thread 2: %s\n", strerror(err));
sleep(1);
printfoo("parent:\n", fp);
exit(0);
}
菜鸟请高人指点
在make APUE第二版时出现了这个错误
-
- 帖子: 17
- 注册时间: 2009-02-01 11:29
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
Re: 在make APUE第二版时出现了这个错误
printf(s);
改成
printf("%s", s);
改成
printf("%s", s);
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
- 帖子: 17
- 注册时间: 2009-02-01 11:29
Re: 在make APUE第二版时出现了这个错误
BigSnake.NET,
前面那个好了,但是怎么好像还是没有MAKE成功,请问怎么查看错误阿,终端里显示的好像没有什么错误,只有警告
前面那个好了,但是怎么好像还是没有MAKE成功,请问怎么查看错误阿,终端里显示的好像没有什么错误,只有警告
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系: