相关疑难解决方法(0)

将 double 传递给 void * 参数的方法

我的问题是由于需要double通过void *函数参数正确传递变量。我问,因为在我的机器sizeof(void *)4,和sizeof(double)8,铸造一个到另一个好像它应该产生一个问题,但我的编译器(CLANG,对所有的警告)没有给出一个问题的指示,和代码似乎工作美好的。

请注意,我已经看到了这个这个。他们的标题中有相似的组成词,但没有回答这个特定的问题。

以下是否会导致严格的别名违规错误?或未定义的行为?

// some calling function
double a = 0.000234423;
func1(&a);

...

void func1(void *var)
{
    double a = *(double *)(var);
}
Run Code Online (Sandbox Code Playgroud)

c strict-aliasing

1
推荐指数
1
解决办法
248
查看次数

标签 统计

c ×1

strict-aliasing ×1