函数原型的地址

时间:2014-08-07 21:26:53

标签: visual-c++ visual-studio-2012 forward-declaration function-prototypes

在新的Visual Studio 2012和2013中,函数的前向声明给出了最顶层的"该功能的地址。它们不再是顺序的,如果它有原型,它将位于内存空间之上(因为它实际上是源代码 - 在顶部)。

这样的代码无效,因为它假设:

int Offset = (VOID*)MAIN - (VOID*)FUNC1

如何防止这种情况,然后再对所有功能进行原型设计?我希望有一些链接器切换或项目设置。

1 个答案:

答案 0 :(得分:0)

我找到了问题。

Visual Studio 2012/2013标志项目 - >一般 - > 整个程序优化:没有整个程序优化正确使用(in)。使用使用链接时间代码生成无论前进声明有多少,都会存档TOP-DOWN编译。

更有经验的人应该解开这个谜团。