2012-06-19 29 views
1
struct LoadsForAPDLScript 
{ 
    double JntLCLoad; 
    double JntPPLoad; 
    double JntLimManLoad; 
    double JntLimShockLoad; 
    double JntOthLimTenLoad; 
    double JntOthLimManLoad; 
    double JntBPLoad; 
    double JntUltManLoad; 
    double JntUltShockLoad; 
    double JntOthUltTenLoad; 
    double JntOthUltManLoad; 
}; 

有什麼辦法可以在一行中初始化上面提到的所有結構變量,而不是逐個初始化它嗎?立即初始化所有的結構變量

回答

2

如果是C++,一個空的構造會自動初始化簡單的數值類型的所有成員變量爲零。

struct LoadsForAPDLScript { 
    ... 
    LoadsForAPDLScript() {} 
}; 

考慮到C兼容性,我不太確定隱式默認構造函數是否也會這樣做。也許有人擁有C++標準(或者知道它的內心),那麼請擴展這個答案。

+0

一切都取決於結構是由問題的作者管理還是包含在第三方庫中。通過一切我的意思是可以添加構造函數到這個結構;) –

+0

最好的庫頭不能承受預處理器的巧妙濫用。 :-D –

1

使用memset

LoadsForADPLScript instance; 
memset(&instance, 0, sizeof(LoadsForADPScript)); 
+0

太棒了,我不知道這件事。 – AurA

+1

這隻有在你的所有成員都是POD(他們在這種情況下)的情況下才有效。 – RedX

+0

如何用一些用戶定義的值來初始化所有結構成員?像這裏我想初始化從JntLCLoad到JntOthUltManLoad到某些值可以說88.怎麼做? – Kenta