【发布时间】:2012-11-25 14:24:37
【问题描述】:
如何禁用对程序中的函数重新排序的编译器/链接器优化? 比方说,我有三个功能,比如
void A (){};
void B (){};
void C (){};
构建后,这些函数可以重新排序,使得 B 在内存中排在第一位,C - 第二, A - 第三。
在 GCC 中,您可以使用“no-toplevel-reorder”选项来解决问题。
-fno-toplevel-reorder
不要对顶级函数、变量和 asm 语句重新排序。 以它们在输入文件中出现的相同顺序输出它们。什么时候 使用此选项,未引用的静态变量不会被删除。 此选项旨在支持依赖于 特定的排序。对于新代码,最好使用属性。
有没有 MS C++ 的类似物?
【问题讨论】:
-
你为什么要做这样的事情?
-
不,没有这样的选项。这有什么用?
-
我正在转换一些旧的 asm 代码,需要它。固件之类的。如果没有这个选项,我只好考虑使用gcc了……谢谢你的回答!
标签: c