gpt4 book ai didi

c++ - gperf 可以接受宏定义的关键字吗?

转载 作者:太空狗 更新时间:2023-10-29 21:46:45 26 4
gpt4 key购买 nike

我想要类似以下 gperf 输入文件的内容:

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

不幸的是,gperf 会将这些解释为字符串“KEYWORD1_MACRO”等。

这样做的原因是我有一个由另一方提供的协议(protocol)规范作为头文件,其中包含这样的#define。所以我无法控制它们的定义方式,我宁愿不必为 #include 标题编写另一个预处理工具并将宏的扩展输出为带引号的字符串,只有这样才能用作 gperf 输入文件。

最佳答案

我做了以下实验,它使用 gcc -E 来处理那些 #include

关键字.h:

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

测试.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

关于c++ - gperf 可以接受宏定义的关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14480811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com