在C++工程中main函数之前跑代码的廉价方法(使用全局变量和全局函数)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C++工程中main函数之前跑代码的廉价方法(使用全局变量和全局函数)相关的知识,希望对你有一定的参考价值。
- // test.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <windows.h>
- #include <crtdbg.h>
- /// 在C++工程中main函数之前跑代码的廉价方法
- /// 利用全局变量可以赋可变初值的事实
- /// mainCRTStartup() => _cinit() => 全局变量(静态, 普通)赋初值
- extern "C" int foo(void);
- extern "C" int foo1(void);
- /// 执行顺序和全局变量声明顺序相同
- /// 先执行foo1, 再执行foo();
- static int gs_iTest = foo1();
- int g_iTest = foo();
- int main(int argc, char* argv[])
- {
- printf("&main = %p\n", &main);
- getchar();
- return 0;
- }
- extern "C" int foo(void)
- {
- /// 执行不带CRT函数的代码
- MessageBox(NULL, "foo before main", "test", MB_OK);
- return 0;
- }
- extern "C" int foo1(void)
- {
- /// 执行不带CRT函数的代码
- MessageBox(NULL, "foo1 before main", "test", MB_OK);
- return 0;
- }
效果
http://blog.csdn.net/lostspeed/article/details/49748951
以上是关于在C++工程中main函数之前跑代码的廉价方法(使用全局变量和全局函数)的主要内容,如果未能解决你的问题,请参考以下文章
node源码详解 —— 在main函数之前 —— js和C++的边界,process.binding