0

この非常に基本的な C++ コードがあるとします。

myCode.cpp:

#include <library1.h>
#include <library2.h>

int main() {
 // use some methods from library2
}

このコードをコンパイルしてもコンパイラが library1.h を見つけられない場合はどうなりますか? 特定のエラーをスローしますか?それでも library2.h を探しますか? 残りの #include ステートメントをスキップして、main のコンパイルに進みますか? 私はこのSOの質問に答えようとしているので、1つの.hファイルを追加するとコンパイラが別の.hファイルからメソッドを見つけられないことについて不平を言うので、私は尋ねています。#include の最初の .h 行がなければ、コードは正しくコンパイルされます。

4

3 に答える 3

3

コンパイラがインクルード エラーに達すると、それを報告してコンパイルを停止します。もちろん、すべてのコンパイラが人に優しいエラーを報告するわけではありませんが、syam がコメントで指摘しているように、このエラーは致命的であるため、すべてのコンパイラが終了することは確かです。

于 2013-06-13T20:04:26.583 に答える
2

特定の#includeファイルが見つからない場合、コンパイルは失敗し、エラーで停止します。コンパイルはこれ以上続行できません。

おかしなことに、ヘッダーが欠落している場合の動作は明示的に指定されていません。標準で唯一関連する部分は16.2/1 [cpp.include]です。

ディレクティブは、#include実装によって処理できるヘッダーまたはソース ファイルを識別します。

コンパイラに選択の余地を与えない Shouldの使用に注意してください。ディレクティブをファイルの内容で置き換える必要があります。#includeファイルが存在しない場合、プログラムの形式が正しくありません。

于 2013-06-13T20:04:59.717 に答える
0

正確には、ファイルが見つからない場合、コードを正しく実行するために必要な場合でも、コンパイラはプログラムを実行できません。コードがそのファイルから何かにアクセスすると、プログラムは必要に応じて実行されません。

于 2013-06-15T22:07:20.293 に答える