C++ 将枚举声明注入当前编译单元的GCC插件

C++ 将枚举声明注入当前编译单元的GCC插件,c++,c,gcc,enums,gcc-plugins,C++,C,Gcc,Enums,Gcc Plugins,在GCC中,向当前编译单元注入枚举声明的最佳方式是什么?例如,我想注入枚举全局_id: #include <iostream> /* Below enum to be injected by a GCC plugin */ enum global_ids { id_a = 0, id_b = 1, /* other IDs */ id_z = 25 }; int main(int argc, char *argv[]) { std::cout

在GCC中,向当前编译单元注入枚举声明的最佳方式是什么?例如,我想注入枚举全局_id:

#include <iostream>
/* Below enum to be injected by a GCC plugin */
enum global_ids {
    id_a = 0,
    id_b = 1,
    /* other IDs */
    id_z = 25
};

int main(int argc, char *argv[]) {
    std::cout << "Fifth enum ID has a value of " << id_e << std::endl;
}
#包括
/*下面是将由GCC插件注入的枚举*/
枚举全局_id{
id_a=0,
id_b=1,
/*其他ID*/
id_z=25
};
int main(int argc,char*argv[]){

你不想使用将枚举放入头中的标准模式有什么原因吗?该插件称为“预处理器”.include
您的ID。枚举值是根据编译单元中的其他函数声明动态生成的,我不希望程序员自己创建枚举。因此需要通过插件提供一些编译器支持。另外,(第二)这对我来说是一个了解GCC内部结构的机会。动态生成的内容可以完美地写入到编译之前包含的文件中,人们正在这样做。如果你想了解GCC内部结构,我相信有大量的资源与示例专门用于此。但是,头文件将是预先准备好的编译前已处理。我希望能够在编译期间生成枚举值和枚举名称。如果在编译期间将生成的枚举写入头文件,编译器将根本不知道枚举,因为(可能为空/过时)标题已经过预处理。我在网上任何地方都找不到有关GCC内部的特定信息,因此我发布了关于堆栈溢出的文章。如果您知道相关示例,请给我指一下:-)