0

ここではパーサージェネレーターを使用していますが、残念ながら、

#include <some/file.h>

生成されたすべてのソース ファイルの先頭に ヘッダーは長い間名前が変更されています。コンパイラ (gcc) に新しいヘッダーを使用させることは問題ありませんが、-include new/header.h生成されたすべてのファイルから上記のディレクティブを削除すると、ビルド プロセスが複雑になります。

単に無視するようにgccに指示する方法はありsome/file.hますか?

4

5 に答える 5

5

some/file.h空のファイルに置き換えます。

于 2009-01-13T17:41:08.087 に答える
5

いいえ。生成されたファイルを後処理できます。いいえ!!!

または、「.」を追加することもできます。システムのインクルード ディレクトリ (または、ローカルのインクルード パスが何であれ - <> システムのインクルード パスであることを確認してください) に追加します。

次に、「some」ディレクトリを作成し、そこに独自の永続的な「file.h」を貼り付けます。これには、#include 用の 1 行があり、-include を削除します。

-include を使用する前に行う方が、より単純で理解しやすいように思われるため、うまくいかない理由があると思います。特に、何が起こっているのかを説明するためにパススルー ファイルにコメントを付けることができるためです。

于 2009-01-13T17:42:41.250 に答える
1

Why not make a symlink from some/file.h to new/header.h, and remove the -include directive?

于 2009-01-13T18:45:58.207 に答える
0

#if、#ifdef、gcc -DSYMBOL=valueコマンドラインフラグなどのプリプロセッサディレクティブを使用してみてください。

たとえば、gcc -DREQUIRE_STDC = 1 -o myfile.o myfile.cを使用してコンパイルし、.cファイルに次のものが含まれている場合:



#if defined(REQUIRE_STDC) && defined(__STDC__)
#include "some/file.h"
#else
#include "another/file.h"
#endif /* defined(REQUIRE_STDC) && defined(__STDC__) */

STDCシンボルとREQUIRE_STDCシンボルの両方が定義されている場合は、「some/file.h」を使用してコンパイルされます。また、同じファイルが複数含まれないようにするために、ヘッダーに適切なディレクティブが含まれている場合があります。



#ifndef MY_HEADER_FILE
#define MY_HEADER_FILE 1

/* your C declarations here */

#endif /* MY_HEADER_FILE */

また、gccプリプロセッサのマニュアルもあります。

于 2009-01-13T19:04:16.360 に答える
0
#include <some/file.h>

may start as something like

#ifndef _FILE_H_
#define _FILE_H_

If so, just add #define _FILE_H_ before the #include command and it should ignore it. I'm not sure whether this is the best solution, though.

于 2009-01-13T18:50:01.490 に答える