4

簡単なテスト コンソール アプリケーションがあります。simple.h ファイルで定義された関数 nike2 を使用しようとしていますが、実現は simple.cpp にあります。simple.h ファイルと simple.cpp ファイルは両方とも、メイン プロジェクトとは別のディレクトリにあります。

プロジェクト エクスプローラーで、「ヘッダー ファイル」に simple.h を追加し、「ソース ファイル」に simple.cpp を追加しました (必要かどうかはわかりません)。

コンソール アプリ:

#include "stdafx.h"
#include "..\..\simple.h"

int _tmain(int argc, _TCHAR* argv[])
{
nike2(5);
return 0;
}

シンプル.h

#include <cstdlib>
#include <iostream>

#ifndef MEMORY
#define MEMORY

int var;
int  nike2(int f);

#endif /*MEMORY*/

シンプル.cpp

#include <cstdlib>
#include <iostream>
#include "simple.h"


int  nike2(int f)
{
 return 0;
}

コンパイル中にエラーが発生しました:

Error   4   error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?   c:\c\simple.cpp 11  1   usingHeader

なんで?マジック「StdAfx.h」は何に使うの?

UPD

simple.cpp はこのように見えるようになりましたが、それでも同じエラーが発生します

#include "C:\c\usingHeader\usingHeader\stdafx.h"
#include <cstdlib>
#include <iostream>
#include "simple.h"


int  nike2(int f)
{
return 0;
}
4

3 に答える 3

7

Stdafx.hプリコンパイル済みヘッダーの作成に使用されます。これには、最も標準的で一般的に使用される が含まれていますinclude

WinAPI は非常に重いため、主にコンパイル プロセスを高速化するために作成されています。

この質問を確認することもできます。より詳細な回答があります。

于 2012-08-07T14:06:36.593 に答える
2

stdafx.h には、変更する予定のないヘッダー インクルードが含まれています。標準ライブラリなどは stdafx.h からインクルードされるため、一度コンパイルするだけで済みます。必要なすべての場所に stdafx.h を含める必要があります。使用したくない場合は、プロジェクトの設定でオフにすることができます。

于 2012-08-07T14:07:00.167 に答える
2

マジック「StdAfx.h」は何に使うの?

Visual Studio のプリコンパイル済みヘッダーに使用されます。

.cpp ファイルに含めるか、すべての Windows ヘッダーを含める必要がないファイルに対して [プリコンパイル済みヘッダーを使用しない] を選択することができます。

于 2012-08-07T14:07:33.790 に答える