我正在尝试使用以下方法键入一组嵌套结构:
struct _A
{
struct _Sim
{
struct _In
{
STDSTRING UserName;
VARIANT Expression;
int Period;
bool AutoRun;
//bool bAutoSave;
} In;
struct _Out
{
int Return;
} Out;
} Sim;
} A;
typedef _A._Sim._In SIM_IN;
事情是VS2010中的编辑喜欢它。它识别typedef中的元素,我可以将它作为参数包含在函数中,但是当你去构建它时,我首先得到警告C4091(当没有声明变量时在左边忽略)然后导致错误C2143“缺少”;'在'。'之前。
typedef的想法是使用一个名称来管理类型定义(在指针,原型等中)到_A._Sim._In容易...如果编译器允许的话,看似完美地使用typedef。
如何使用一个名称引用嵌套结构来使指针管理和类型指定比使用整个嵌套名称(_A._Sim._In)更容易?
答案 0 :(得分:0)
这可能不是优选的,但是,如果使用typedef无法实现,我想你总能做到
#define _A._Sim._In SIM_IN
但正如我所说,你可能因为各种原因而不愿意这样做。 :)
答案 1 :(得分:0)
点运算符是应用于对象的后缀运算符(就C而言)。即,您不能将其应用于类型。
要达到您想要的效果,您可以使用功能或宏,例如:
#define SIM_IN(x) x._Sim._In