编译器优化合并相同的函数实现,这意味着要在运行时绕过存根 我有一个C++测试项目,它有一组存根函数,它们具有相同的实现。这些存根将在运行时使用Windows迂回“替换”。问题是,在发布模式下,编译器使所有这些存根指向同一个实现。为了说明这一点,请考虑此代码: #include <iostream> using namespace std; void A() { cout << "stub" << endl; } void B() { cout << "stub" << endl; } void main() { cout << &A << ", " << &B << endl; } #包括 使用名称空间std; void A(){cout

编译器优化合并相同的函数实现,这意味着要在运行时绕过存根 我有一个C++测试项目,它有一组存根函数,它们具有相同的实现。这些存根将在运行时使用Windows迂回“替换”。问题是,在发布模式下,编译器使所有这些存根指向同一个实现。为了说明这一点,请考虑此代码: #include <iostream> using namespace std; void A() { cout << "stub" << endl; } void B() { cout << "stub" << endl; } void main() { cout << &A << ", " << &B << endl; } #包括 使用名称空间std; void A(){cout,c++,compiler-optimization,detours,C++,Compiler Optimization,Detours,尝试使用预处理器宏使存根函数唯一,这样优化器就不会将它们合并为一个函数 大概是这样的: void A() { cout << __FUNCTION__ << endl; } void B() { cout << __FUNCTION__ << endl; } void A(){cout尝试使用预处理器宏使存根函数唯一,这样优化器就不会将它们合并为一个函数 大概是这样的: void A() { cout << __FUNCTION_

尝试使用预处理器宏使存根函数唯一,这样优化器就不会将它们合并为一个函数

大概是这样的:

void A() { cout << __FUNCTION__ << endl; }
void B() { cout << __FUNCTION__ << endl; }

void A(){cout尝试使用预处理器宏使存根函数唯一,这样优化器就不会将它们合并为一个函数

大概是这样的:

void A() { cout << __FUNCTION__ << endl; }
void B() { cout << __FUNCTION__ << endl; }
void A(){cout