2012-06-19 28 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