|
关于POSIX标准,pthread_create的一个问题
#include<pthread.h>
#include<stdio.h>
void print_message_function( void *ptr );
int main()
{
pthread_t thread1, thread2;
char *message1 = "Hello";
char *message2 = "World";
pthread_create(&thread1, NULL,
(void*)&print_message_function, (void*) message1);
pthread_create(&thread2, NULL,
(void*)&print_message_function, (void*) message2);
return 0;
}
void print_message_function( void *ptr )
{
char *message;
message = (char *) ptr;
printf("%s ", message);
}
对于以上程序中pthread_create的第三个参数改为(void*)print_message_function(将原先的&去掉),其它都不变,程序也能正常通过。
Pthread_create的原型是: int pthread_create(pthread_t * thread, pthread_attr_t * attr, void *(*start_routine)(void *), void * arg);
这应该是函数的指针呀。如何解释这种现象呢? 哪一种更符合规范呢? 理由是什么呢?
请大家指教,谢谢! |
|