我的问题是由于需要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)