inlcude_next がたまたま C プリプロセッサの GNU 拡張であることは知っています。MSVC を使用して Gnu ライブラリ コードをコンパイルする際に問題が発生しています。たとえば、stdio.h ヘッダー ファイルなどがありますGNU-like <stdio.h>
。MSコンパイラを使用してコンパイルすると、Windows用のディレクティブのinvalid preprocessor command 'include_next'
ようなものがないため、どちらが適切かがわかります。#include_next
#include_next を実行する主な目的は、プロジェクトに stdio.h というファイルを作成し、それをデフォルトのヘッダーの代わりにインクルードすることです。
そこで、2 つのオプションを試しました。1)// #include_next <stdio.h>
すべてのファイルでこの行をコメントアウトします。2) または #include_next を に置き換え#include <stdio.h>
ます。
1)を選択すると問題が発生するかどうかはわかりません(最後にリンカーエラーが発生します)。2)については、fatal error C1014: too many include files : depth = 1024
どちらでも良いと思います。このwrapper #ifndef
ために、インクルード ガードまたは# pragma once
ディレクティブを使用します。
以下は私の懸念事項です:
ヘッダー ファイル stdio.h のように#include <stdio>
、またはヘッダー ファイル内にステートメントを記述する必要がありますか? #include "stdio.h"
Windows用にコンパイルするときに意味がありますか。必要なすべてのソース ファイルで直接実行するだけで十分ではない#include "stdio.h"
ので、Visual C 標準ヘッダーをバイパスして、代わりに私のものを使用しますか? また、include_next ステートメントを完全に省略した場合、何が起こる可能性がありますか?
私の主な目的は、MSVC を使用して gnu ライブラリを正常にコンパイルすることです。何か不足している場合は修正してください。または、このトピックにさらに光を当ててください。