5

#defineすべてのインクルードファイルを編集したAPIを使用しています。Visual C ++ 2010 Expressで開発していますが、これまでは問題なく動作しています。

プロジェクトに新しいcppファイルを追加していましたが、代わりに誤って「Windowsフォーム」を追加しました。VCは、私のプロジェクトは現在CLRを使用していないと警告しましたが、本当に使用したかったのでしょうか。[いいえ]をクリックして、意図したとおりにファイルを追加しました。しかし、その後、私のプロジェクトはコンパイルされなくなりました。

コードは基本的に次のようになります。

api_header.h

#define DEFINED_HEADER_NAME "path/to/header/file.h"

stdhpf.h

#include DEFINED_HEADER_NAME

私が言ったように、長い間うまくいきました。今私はこれを取得します:

エラーC2006::'#include'ファイル名が必要ですが、致命的なエラーが見つかりました'identifier'
エラーC1083:インクルードファイルを開くことができませ''ん::そのようなファイルまたはディレクトリはありません

これを引き起こしているのは何ですか?プリコンパイル済みヘッダーをオンにしたためだという投稿を見つけましたが、チェックProject properties > Configuration properties > C/C++ / Precompiled headersしてオフにしました(VSを初めて使用するため、設定パスについて説明します。これを行うには複数の方法がある可能性があります... )。

何か案は?

4

3 に答える 3

7

問題は、Windowsフォームオブジェクトを誤って追加することとは関係なく、2つのステートメントが前処理される順序にほぼ確実にあります。

このナレッジベースの記事は次のことを示唆しています。

問題は、定義された定数を使用して、#includeディレクティブでインクルードファイルを指定することです。マクロが完全に展開される前にディレクティブが処理されているため、エラーが発生します。

2番目のエラーは、プリプロセッサが空の名前のインクルードファイルを検索していることを示しているため、これを確認しているようです。

fatal error C1083: Cannot open include file: '': No such file or directory
于 2011-05-20T15:27:14.097 に答える
0

インクルードファイルの順序が変更されました。おそらく、#include "stdhpf.h"VisualStudioはあなたの前のどこかに挿入されました#include "api_header.h"

于 2011-05-20T15:36:39.837 に答える
0

プリコンパイル済みヘッダーを無効にします。それは役立つはずです。

于 2015-06-29T10:48:54.657 に答える