avatar
l*i
1
如下一段code:
int PrecFunc(void *params)
{
double m1 = *(double *)params;
double m2 = *(double *)(params+sizeof(double));
double M = *(double *)(params + sizeof(double)*2);
double mu = *(double *)(params + sizeof(double)*3);
double eta = *(double *)(params + sizeof(double)*4);
double m = *(double *)(params + sizeof(double)*5);
... ...
}
如果存成.c文件用gcc编译可以通过,但是存成.cpp文件用g++编译就会说
"error: pointer of type ‘void *’ used in arithmetic"
因为用到现有的一个函数库,PrecFunc的输入参数类型必须是void *,应该
怎么样修改才能在gcc和g++下编译都通过呢?
avatar
k*f
2

double*p=(double*)params;
double m1=p[0];
double m2=p[1];
double M=p[2];
......................
......................

【在 l*********i 的大作中提到】
: 如下一段code:
: int PrecFunc(void *params)
: {
: double m1 = *(double *)params;
: double m2 = *(double *)(params+sizeof(double));
: double M = *(double *)(params + sizeof(double)*2);
: double mu = *(double *)(params + sizeof(double)*3);
: double eta = *(double *)(params + sizeof(double)*4);
: double m = *(double *)(params + sizeof(double)*5);
: ... ...

avatar
l*i
3
多谢多谢,呵呵~~~

【在 k****f 的大作中提到】
:
: double*p=(double*)params;
: double m1=p[0];
: double m2=p[1];
: double M=p[2];
: ......................
: ......................

avatar
S*g
4
you might want use template instead of void* in C++

【在 l*********i 的大作中提到】
: 如下一段code:
: int PrecFunc(void *params)
: {
: double m1 = *(double *)params;
: double m2 = *(double *)(params+sizeof(double));
: double M = *(double *)(params + sizeof(double)*2);
: double mu = *(double *)(params + sizeof(double)*3);
: double eta = *(double *)(params + sizeof(double)*4);
: double m = *(double *)(params + sizeof(double)*5);
: ... ...

avatar
l*i
5
en, 多谢多谢,找机会一定弄来看看,老听人说template,从来不知道是个
啥东东,呵呵,我土。

you might want use template instead of void* in C++

【在 S*********g 的大作中提到】
: you might want use template instead of void* in C++
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。