0

これを使用して、ネストされた構造体のグループを型定義しようとしています:

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 "missing ';' が発生します。前 '。'。

typedef の考え方は、_A._Sim._In への型定義 (ポインター、プロトタイプなど) を 1 つの名前で簡単に管理できるようにすることです。

ネストされた構造体を 1 つの名前で参照して、ネストされた名前全体 (_A._Sim._In) を使用するよりもポインター管理と型指定を簡単にするにはどうすればよいですか?

4

2 に答える 2

0

ドット演算子は、 (C に関して)オブジェクトに適用される後置演算子です。つまり、型には適用できません。

必要なものに到達するには、関数またはマクロを使用できます。たとえば、次のようになります。

 #define SIM_IN(x) x._Sim._In
于 2013-03-01T07:54:35.657 に答える
0

そうするのは好ましくないかもしれませんが、typedefを使用してそれを達成できない場合は、いつでもできると思います

#define _A._Sim._In SIM_IN

しかし、私が言ったように、あなたはさまざまな理由でそれを好まないかもしれません. :)

于 2013-03-01T07:50:24.677 に答える