【问题标题】:MS C++ disable function reorderingMS C++ 禁用函数重新排序
【发布时间】: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


【解决方案1】:

可以使用#pragma code_seg("segname$tag"); 来完成

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多