C/C++中如何在main()函数之前执行一条语句?

在C语言中,如果使用GCC的话,可以通过attribute关键字声明constructor和destructor(C语言中如何在main函数开始前执行函数

#include <stdio.h>  

__attribute((constructor)) void before_main()
{
    printf("%s/n",__FUNCTION__);
}  

__attribute((destructor)) void after_main()
{
    printf("%s/n",__FUNCTION__);
}  

int main( int argc, char ** argv )
{
    printf("%s/n",__FUNCTION__);
    return 0;
}

在C++中,利用全局变量和构造函数的特性,通过全局变量的构造函数执行(C++语言怎么在main函数执行之前执行一段代码

#include <Iostream>
using namespace std;

class TestClass
{
        public:
                TestClass();
};

TestClass::TestClass()
{
        cout<<"TestClass"<<endl;
}

TestClass Ts;//定义个全局变量,让类里面的代码在main之前执行

int main()
{
        cout<<"main"<<endl;

        return 0;
}
时间: 2024-10-12 14:20:49

C/C++中如何在main()函数之前执行一条语句?的相关文章

多玩YY语音的面试题:C++中如何在main()函数之前执行操作?

第一反应main()函数是所有函数执行的开始.但是问题是main()函数执行之前如何执行呢? 联想到MFC里面的 C**App类的theApp对象,其执行顺序就在main函数之前.道理相通,顺理推下,能够想到:如果在main函数之前声明一个类的全局的对象.那么其执行顺序,根据全局对象的生存期和作用域,肯定先于main函数. 示例如下: class simpleClass { public: simpleClass( ) { cout << "simpleClass construct

windows平台中让函数在main函数之前执行的方法

1.将要执行的代码写到类的构造函数中,并定义对应的全局变量2.将要执行的代码写到TLS回调函数中在c/c++中,我们都知道main函数是程序开始执行的地方,但是在进行反调试的时候,很多时候都需要调试检测函数在main函数之前执行. 1.将要执行的代码写到类的构造函数中,并定义对应的全局变量在windows平台中,执行我们手写的main函数之前,系统会执行一段CRTstartup代码,对系统的堆栈.全局变量.命令行参数.环境变量等进行初始化操作.该方法就是利用windows在执行main函数之前先

电脑从开机加电到操作系统main函数之前执行的过程

总的来说在操作系统加电启动之后到main函数执行之前操作系统经历了以下3个大步骤 1.启动BIOS.这个时候位于实模式下,加载中断向量和中断服务程序 2.加载操作系统内核并为保护模式做准备.这个时候操作系统一共加载了3部分代码:引导程序bootsect,内核代码setup,内核代码system模块 3.从实模式转换为32位保护模式.这个过程要做大量重建工作,并且持续工作到操作系统main函数的执行过程.细说的话,主要包括打开32位寻址空间,打开保护模式,建立保护模式下的中断相应机制与保护模式配套

怎样使代码在main函数前执行,怎样使代码在main函数之后执行

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 网上有说可以用 __attribute__ ((constructor)) 来让函数在main函数之前执行, __attribute__ ((destructor)) 来让函数在main函数之后执行. 比如说像下面这样声明函数 void before(void) __attribute__ ((constructor)); void after(void) __attribute__ ((

全局对象的构造函数会在main 函数之前执行

#include <iostream> using namespace std; class A { public: A() { cout << "Generator A" << endl; } } a = A(); int main() { cout << "Hello World" << endl; } 全局对象的构造会在main函数之前执行.

java main函数不执行?

今天脑袋短路,对于这个问题纠结了好久.这个问题具体是这样的: public class test { public static void main(String[] args) { test2 t = new test2(); System.out.println("" + t.i); t.meth(); } } public class test2 { public Integer i=5; test2(){ System.out.println("构造函数")

在main函数之外执行函数的情况

1.onexit函数 #include "stdafx.h" #include "iostream" #include <stdlib.h> using namespace std; int func() //必须为int返回值 { cout<<"This is after main function"<<endl; system("pause"); return 0; } int main

2)main函数在执行前和执行后有哪些操作

main函数执行之前,主要就是初始化系统相关资源: ? ? ?1. 设置栈指针 ? ? ?2. 初始化static静态和global全局变量,即data段的内容 ? ? ?3. 将未初始化部分的全局变量赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容 ? ?? ? ? ?4. 全局对象初始化,在main之前调用构造函数 ? ? ?5. 将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数 main

Linux中Main函数的执行过程

1. 问题:Linux如何执行main函数. 本文使用一个简单的C程序(simple.c)作为例子讲解.代码如下, int main() { return(0); } 2.  编译 -#gcc -o simple simple.c 3. 查看可执行文件的基本信息 -#objdump -f simple simple: file format elf32-i386 architecture: i386, flags 0x00000112: EXEC_P, HAS_SYMS, D_PAGED sta