• [ASM C/C++] C语言的main 函数


    C语言有两种可能的运行环境

    1. 独立(freestanding)

    在独立环境中,C程序执行不需要操作系统的支持,因此只具有最小的链接库能力。

    2. 宿主(hosted)

    在宿主的环境中,C程序会在操作系统的控制下执行,并且会使用操作系统所提供的支持,具有完整的标准链接库能力。

    为宿主环境而编译的程序必须定义一个名为main的函数,这是程序开始时调用的第一个函数。

    main 函数的定义有两种形式:

    int main(void){} // 没有参数, 返回int.

    int main(int argc, char *argv[]){} // 两个参数,返回int .

    另外许多C的实现还支持以下定义

    int main(int argc, char *argv[], char *envp[]) //三个参数,一个int,两个char **, 返回int.

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdarg.h>
    
    
    /*  参数argc 和 argv 代表程序的命令行自变量
        argc : argument count  值如果不是0,就是命令行中字符串的数量,程序本身名字也算在内。
        argv : argument vecto  一个char指针数组,每个指针指向命令行中的字符串。
        envp : 环境指针; 是一个指针数组,指向组成程序环境的字符串。C中可用getenv()函数取得这些环境变量。
    */
    int main(int argc, char *argv[], char *envp[])
    {
        printf("argument count is: %d  %s 
    ", argc, argv[0]);
    
        for(int i=1; i<argc; i++)
        {
            printf("the %d argument is: %s 
    ", i, argv[i]);
        }
    
        for(int i=0; envp[i] != ''; i++)
        {
            printf("the env argument is: %s 
    ", envp[i]);
        }
    
        // get the env argument
        char *env = getenv("USER");
        printf("%s 
    ", env);
    }

    执行结果:

    mac-abeen:asm_c abeen$ gcc arg.c 

    
    

    mac-abeen:asm_c abeen$ ./a.out

    
    

    argument count is: 1  ./a.out 

    
    

    the env argument is: TERM_PROGRAM=Apple_Terminal 

    
    

    the env argument is: SHELL=/bin/bash 

    ......

    abeen 

    
    
    
     
  • 相关阅读:
    php 服务器部署 500错误
    myeclipse 安装phpeclipse插件
    mysql修改引擎
    linux ftp命令
    jquery datepicker使用
    写一个函数代替php自带的include_once
    mysql 数据类型
    jquery option:last各浏览器支持不是很好
    html编辑器 学习
    今天去康盛面试,好歹我也工作3年了,还说我是初级选手,KAO
  • 原文地址:https://www.cnblogs.com/abeen/p/4251657.html
Copyright © 2020-2023  润新知