在新的Visual Studio 2012和2013中,函数的前向声明给出了最顶层的"该功能的地址。它们不再是顺序的,如果它有原型,它将位于内存空间之上(因为它实际上是源代码 - 在顶部)。
这样的代码无效,因为它假设:
int Offset = (VOID*)MAIN - (VOID*)FUNC1
如何防止这种情况,然后再对所有功能进行原型设计?我希望有一些链接器切换或项目设置。
答案 0 :(得分:0)
我找到了问题。
Visual Studio 2012/2013标志项目 - >一般 - > 整个程序优化:没有整个程序优化正确使用(in)。使用使用链接时间代码生成无论前进声明有多少,都会存档TOP-DOWN编译。
更有经验的人应该解开这个谜团。