Может ли gperf принимать ключевые слова, определенные макросами?

Я хотел бы что-то вроде следующего входного файла gperf:

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

К сожалению, gperf будет интерпретировать их как «KEYWORD1_MACRO» и т. Д.

Причина этого заключается в том, что у меня есть спецификация протокола, предоставленная другой стороной в виде файла заголовка, содержащего #defines. Так что я не могу контролировать, как они определены, и я бы предпочел не писать другой инструмент предварительной обработки для #include заголовок и вывод расширения макроса в виде строк в кавычках, только затем для использования в качестве входного файла gperf.

3

Решение

Я сделал следующий эксперимент, который использует gcc -E иметь дело с теми #includes.

keywords.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,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]