簡體   English   中英

可以將一個雙精度結構轉換為C中的雙精度數組嗎?

[英]Can a struct of doubles be typecast to an array of doubles in C?

這在C中合法嗎?

struct Doubles
{
  double a,b,c;
};

void foo(struct Doubles* bar)
{
  double* baz = (double*)bar;
  baz[0]++;
  baz[1]++;
  baz[2]++;
}

我知道它在MSVC 2010上“有效”,但我不知道它是否合法,或者不同的布局是否會導致UB。

這導致未定義的行為。 結構的布局並非完全由標准規定。 例如,可能存在填充。

允許編譯器填充/打包它喜歡的結構,因此嚴格來說,您的代碼不是100%安全的。 不過,它適用於大多數實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM