我正在尝试使以下人为的示例起作用。在下面的代码中,我声明了一个 const 全局变量,并尝试通过首先使用VirtualProtect
使地址可写来修改它。
#include <cstdio>
#include "windows.h"
int const ConstantZero = 0;
int main() {
DWORD OldProtect = NULL;
VirtualProtect((void *)&ConstantZero, sizeof(int), PAGE_READWRITE, &OldProtect);
const_cast<int&>(ConstantZero) = 1;
printf("ConstantZero is %d\n", ConstantZero);
}
虽然这可行,但printf
函数的参数作为立即值而不是变量传递。无论如何让编译器将参数作为变量传递?我正在为 x86 使用 MSVC 编译器版本 19.26.28806。