1

Windows で GCC を使用して、コンパイル中のファイルに含める特定のインクルード ファイルの名前を gcc コマンド ライン (または手動で管理された makefile から) で指定できるようにしたいと考えています。私が見たところ、ソース コード ファイルには次のような行が含まれているのが理想的です…</p>

#include INCLUDEFILENAME 

…その後、gcc コマンド ラインで指定されたファイル名がINCLUDEFILENAMEテキストに置き換えられます。

オプションを使用してgccコマンドラインでINCLUDEFILENAMEというマクロを定義することでこれを達成することに近づくことができるようです-D(例:含めるファイルとして認識されません。もちろん…</p> -D INCLUDEFILENAME="C:\TestLib\Test1.h"#include

#include "INCLUDEFILENAME" 

…INCLUDEFILENAMEが文字列リテラルになり、マクロ値に置き換えられないため、機能しません。\x22二重引用符 ( 、\"、など)を指定する他の方法を試しまし"\""たが、これらは行で機能しないようです#include

ソースファイルに何らかの方法で言及されていなくてもファイルを強制的に含めることができるように見えるgcc-includeオプションを認識していますが、ソースファイルがインクルードファイルをここに含めることを示していることを望んでいますが、 name は、ソース ファイルに対して「外部的に」指定されます (最終的には、makefile から)。

これを達成する方法についての提案をいただければ幸いです。

4

2 に答える 2

0

定義の一部として二重引用符を含める必要が"あります(または<>、場合によっては、)。

% cat test.c

#include <stdio.h>
#include OTHERFILE

int main() { printf("%s\n", func()); }

% cat func.c

char *func() { return "It worked."; }

% gcc test.c -DOTHERFILE='"func.c"'
% ./a.out
It worked.
%
于 2012-05-10T17:17:02.197 に答える
0

醜いが古典的な文字列化のトリックを使用できます。

#define STRINGIFY2(x) #x
#define STRINGIFY(x) STRINGIFY2(x)
#include STRINGIFY(INCLUDEFILENAME)
于 2016-07-11T15:23:35.553 に答える