C++ 使用gcc插件修改变量声明的顺序
我知道这很难做到,我应该避免,但我有我的理由。 我想修改一些字段声明在编译时的顺序,例如:C++ 使用gcc插件修改变量声明的顺序,c++,gcc,g++,gcc-plugins,gimple,C++,Gcc,G++,Gcc Plugins,Gimple,我知道这很难做到,我应该避免,但我有我的理由。 我想修改一些字段声明在编译时的顺序,例如: class A { char c; int i; } 必须转向: class A { int i; char c; } 如果我选择交换I和c的顺序, 我想知道如何更改具有树的字段声明的位置 有人知道我该怎么做吗?? 谢谢 我使用g++4.9.2版本的插件如果我要尝试这个,我会尝试两种不同的方法 钩住插件\u完成\u类型事件并在那里重写类型。要重写它,请对字段重新排序并强
class A {
char c;
int i;
}
必须转向:
class A {
int i;
char c;
}
如果我选择交换I
和c
的顺序,
我想知道如何更改具有树的字段声明的位置
有人知道我该怎么做吗??
谢谢
我使用g++4.9.2版本的插件如果我要尝试这个,我会尝试两种不同的方法
钩住插件\u完成\u类型
事件并在那里重写类型。要重写它,请对字段重新排序并强制重新显示该类型。您必须阅读一些GCC源代码,以了解如何使布局无效并强制使用新布局
如果这不起作用,添加一个在GIMPLIZATION之后运行的新过程,并尝试在那里重写类型。不过,我怀疑这不太可能奏效
钩住PLUGIN_FINISH_TYPE事件并在那里重写类型。要重写它,请对字段重新排序并强制重新显示该类型。您必须阅读一些GCC源代码,以了解如何使布局无效并强制使用新布局
这是在linux内核中实现的
此解决方案可以工作,但它会破坏dwarf调试信息。事实上,在调试信息中,成员的顺序与源代码中最初定义的顺序相同,但结构在二进制文件中进行了很好的洗牌。您能将变量封装到类中吗?我想给变量一个我自己的顺序,也许我不是很清楚,我想写一个gcc插件:如果你想了解更多关于gcc插件的信息。该插件允许我更改变量声明的顺序。