C言語・C++でプログラムを書いてコンパイルしたらコードC1083「include ファイルを開けません。 Nosuch file or directory」と表示されてコンパイル・ビルドに失敗してしまうことがあります。
これは初心者の方や久々にC言語・C++を書く人がやってしまいがちなコンパイラエラーなので、簡単に解説していきます。
C1083エラーが発生する原因
C1083「include ファイルを開けません。 Nosuch file or directory」が表示される原因は一つ。
存在しないヘッダーファイルをincludeしようとしている
絶対に存在するはずなのにincludeに失敗していることもありますが、これは必ずヘッダーファイル・ソースコードどちらかに問題がある状態です。開発ソフトのバグであることはまずないでしょう。
C1083エラーが発生した時に確認すべきこと・対処法
C1083「include ファイルを開けません。 Nosuch file or directory」のエラーが発生したときに確認すべき項目やエラーを解消するための対処法について解説します。
「<>」と「””」を間違えていないかどうか
include文では読み込むヘッダーファイルを記号で囲みますが、囲む記号は「<>」と「””」の2種類あります。
- <>:パスが通っていているフォルダのヘッダーファイル読み込みで使用(#include<stdio.h>など
- “”:プロジェクト内のヘッダーファイルなど、相対パスで指定するときに使用
例えば同じプロジェクトにあるsample.hとC言語標準ライブラリstdio.hを読み込む場合はこのようになります。
// <>で囲む
#include<stdio.h>
// ""で囲む
#include"sample.h"
int main() {
}
この2つの記号の使い分けができていないとヘッダーファイル読み込みで苦戦することになるので注意してください。
非常に重要なことなのでC言語の入門書でも触れられているはずです。
ファイル名のスペルミスをしていないかどうか
オートコンプリート機能を使わず全て手入力で打ってる場合に起きやすいです。
include文で指定したファイル名が間違っていると、当然ながら存在しないファイルを読み込もうとするのでコンパイルエラーとなります。
スペルミスの疑いがある場合はinclude 文を書き直すといいでしょう。
拡張子を間違えていないかどうか
C言語・C++で使用するヘッダーファイルの拡張子は「.h」だけではありません。他にも以下の拡張子が使われることがあります。
- .hh
- .hpp
- .hxx
拡張子こそ異なりますが、どれも全く同じヘッダーファイルです。include文は正しくヘッダーファイル名を指定しないといけないので、拡張子を間違えるということがないように注意してください。
フォルダパスを間違えていないかどうか
include文ではヘッダーファイルのファイルパスを指定します。そのため、ヘッダーファイルが別フォルダに入っていた場合は、フォルダパスから記述していく必要があります。
例えばheaderフォルダのsample.hをインクルードしたい場合、include文は下記のように記述します。
#include"header/sample.h"
相対パス指定なのでソースファイル名を「””」で囲っていることにも注意してください。
相対パス指定で別フォルダのヘッダーファイルを読み込む場合はフォルダ名を含むフォルダパスでないと読み込めないので、フォルダを分けて管理している場合は注意してください。
include文は間違えないように
include文はC言語・C++において絶対に必要な構文です。include文を書けないC/C++プログラマーはいないでしょう。
一度覚えればカンタンなことですので、今までわかっていなかった人はこれを機会に覚えるようにしてください。