#include <stdio.h>
int ret;
void *(myf) (void *arg)
{
int *my_arg_L = (int *)arg;
printf("myf arg: %p\n", arg);
printf("my_arg_L: %d, %d\n", my_arg_L[0], my_arg_L[1]);
ret = 99;
return &ret;
}
int create(void *(*start_routine) (void *), void *arg)
{
printf("arg: %p\n", arg);
start_routine(arg);
return 0;
}
int main(int argc, char *argv[])
{
int p=2, q=100;
int arg_L[2] = { p, q-1 };
printf("arg_L: %p\n", arg_L);
int r = create(myf, (void *)arg_L);
printf("r: %d\n", r);
return 0;
}
模拟的程式行为, 让你参考看看。
※ 引述《skyHuan (Huan)》之铭言:
: 开发平台(Platform): (Ex: Win10, Linux, ...)
: Linux
: 额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
: pthread
: 问题(Question):
: 最近在做多执行绪的实作遇到两个问题
: 1.
: 因为pthread_create要呼叫的函式需要的参数是用指标宣告
: 所以函式的参数宣告成(void *)
: 我用一个args array传入参数
: 那这个参数在函式中该怎么取用呢
: 我写的直接用arg[0], arg[1]应该是错的
: compiler会有dereferencing "void *" pointer的warning