我正在使用Pthreads开始编程。我使用Dev-C ++并将库链接到项目中。简单的程序编译,但它不起作用。下面我附上了代码。有谁知道这是什么问题?
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <windows.h>
void *func (void* x){
printf("(%s)",'Hi. It's thread number 1');
return 1;
}
int main() {
pthread_t thread;
int x=1;
pthread_create(&thread, NULL, func, &x);
pthread_join(thread,1);
return 0;
}
答案 0 :(得分:3)
这一行
printf("(%s)",'Hi. It's thread number 1');
应该是
printf("(%s)", "Hi. It's thread number 1");
字符串文字用引号"
括起来。
同样将1
传递给pthread_join()
作为2 nd 参数,大多数人都会调用未定义的行为,因为它告诉函数将类型void *
的值写入地址1
,预计不会指向有效的内存。
答案 1 :(得分:0)
编译器是不是抱怨那个巨大的多字符字符常量? (它应该抱怨两次;一次是关于一个巨大的多字符字符常量,一次是当printf期望一个字符串时将字符常量传递给printf。)在第8行尝试在字符串周围加双引号。