3

次のgperf入力ファイルのようなものが欲しいです:

%{
#include <keywords.h>
// the contents of which contain
// #define KEYWORD1_MACRO "keyword1"
// #define KEYWORD2_MACRO "keyword2"
%}
%%
KEYWORD1_MACRO
KEYWORD2_MACRO
%%

残念ながら、gperfはそれらを「KEYWORD1_MACRO」などの刺し傷として解釈します。

これは、他の当事者からヘッダーファイルとして提供されているプロトコル仕様があり、そのようなものが含まれているためです#define。したがって、それらの定義方法を制御することはできません。また、別の前処理ツールを#includeヘッダーに記述して、マクロの展開を引用符で囲まれた文字列として出力し、gperf入力ファイルとして使用する必要はありません。

4

1 に答える 1

2

gcc -E私はそれらを処理するために使用する次の実験を行いました#include

キーワード.h:

#define KEYWORD1_MACRO "keyword1"
#define KEYWORD2_MACRO "keyword2"

test.c:

%{
#include "keywords.h"
%}
%%
KEYWORD1_MACRO
KEYWORD2_MACRO
%%

コマンド:gcc -E -o test.out.txt test.c
次に、test.out.txtのコンテンツ:

# 1 "test.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "test.c"
%{
# 1 "keywords.h" 1
# 3 "test.c" 2
%}
%%
"keyword1"
"keyword2"
%%

#include自動的に処理されます。次に、テキスト処理を実行して、にフィードできますgperf

于 2013-01-23T15:33:41.130 に答える