[英]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.