2011-02-08 13 views
8

私はVisual Studioのそれのようないくつかのヘッダファイルで定義された構造、多くの持っている2008年にC++アプリケーション書いている:ソースファイルで定義に移動すると、失敗する - のVisual Studio 2008の

#pragma pack(push , 1)    // align on a 1-byte boundary 

typedef struct myStruct_tag 
{ 
    /* ... */ 
} myStruct_t; 

#pragma pack(pop)      // end 1-byte boundary alignment 

を、これらの定義された構造は、そのまま使用されています。それが正常に時々私は(例えばMyFuncのように)カスタムデータ型を右クリックしたときに、それは私にエラーを与え、0エラーと0警告をコンパイル

void MyFunc(void) 
{ 
    myStruct_t * myStruct = NULL; 

    myStruct = (myStruct_t *)malloc(sizeof(myStruct_t)); 

    /* and so forth and so on... */ 
} 

にもかかわらず:

The symbol 'myStruct_t' is not defined.

それから私は、ダイアログボックスを閉じて、ソリューションを再構築するはCtrl +Altキー + F7を押して[OK]をクリックします。エラーや警告なしでビルドされるので、コンパイル時にmyStruct_tの定義が見つかりましたが、を使用しようとすると見つかりません。定義に移動してください。私に起こる唯一の事は、このアプリケーションは1バイトで整列された多くの構造体を持っていますが、違いはありません。誰もがこれを修正する方法を知っていますか?

答えて

9

ソリューションを閉じて、* .sdfファイルを削除してみてください。ソリューションを再度開くとIntellisenseはデータベースを再構築しなければならないため、問題が解決する可能性があります。

編集:固定間違いは編集2

を指摘:レガシーのために、あなたは、Visual Studio 2008またはそれ以上の年齢を使用している場合、あなたはすべての* .NCBファイルを削除する必要があります。

+0

これはトリックでした!ありがとう! –

+0

Visual Studio 2010には* .ncbファイルはありません。 * .sdfファイルを使用します。 – Loghorn

+0

私の間違いです。私はVS2008を使用しています。それに応じてOPを更新します。 –

1
  1. ビジュアルスタジオプロセスを終了します。 (ビジュアルスタジオ2005では、ビジュアルスタジオプロセスが終了したときにファイル*.ncbをすべて削除する必要があります)
  2. ソリューションを再度開いて、ソリューションを清掃してください:Build -> Clean Solution
関連する問題