第七章 进程环境 | 001 命令形参、gcc与g++的使用

  1. 命令形参

命令行参数是使用main()函数参数来处理的,其中,argc是指传入参数的个数,argv[]是一个指针数组,指向传递给程序的每个参数。

应当指出的是, argv[0]存储程序的名称,argv[1]是一个指向第一个命令行参数的指针,argv[n]是最后一个参数。 如果没有提供任何参数,argc 将为1,否则,如果传递了一个参数,argc将被设置为2。

多个命令行参数之间用空格分隔,但是如果参数本身带有空格,那么传递参数的时候应把参数放置在双引号或单引号内部。


测试代码:

#include <stdio.h>int main(int argc, char *argv[]) {if (argc == 2) {printf("The argument supplied is %s\n", argv[1]);} else if (argc > 2) {printf("Too many arguments supplied.\n");} else {printf("One argument expected.\n");}
}

编译与运行
这里写图片描述


  1. gcc的使用

这里写图片描述

语法
gcc(选项)(参数)选项:
-o:     指定生成的输出文件;
-E:     仅执行编译预处理;
-S:     将C代码转换为汇编代码;
-wall:  显示警告信息;-c:    仅执行编译操作,不进行连接操作。 参数:C源文件(指定C语言源代码文件)

1.选项 -o:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。

gcc test.c -o test

2.选项 -E:将test.c预处理输出test.i文件。

gcc -E test.c -o test.i

3.选项 -c:将预处理输出文件test.i汇编成test.s文件。

gcc -E test.c -o test.i

4.选项 -O:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

gcc -O1 test.c -o test

**如果有多个源文件,基本上有两种编译方法:**

【问题】假设有两个源文件为test.c和testfun.c

1.多个文件一起编译:将testfun.c和test.c分别编译后链接成test可执行文件。

多个文件一起编译:将testfun.c和test.c分别编译后链接成test可执行文件。

2.分别编译各个源文件,之后对编译后输出的目标文件链接。

gcc -c testfun.c    #将testfun.c编译成testfun.o
gcc -c test.c         #将test.c编译成test.o
gcc -o testfun.o test.o -o test    #将testfun.o和test.o链接成test

以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。

  1. g++的使用

链接:Linux的g++的使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java接口实例化对象和类实例化对象,附赠课程+题库

面试整体事项 简历要准备好&#xff0c;联系方式一定要正确清晰醒目&#xff0c;项目经历按照时间倒序阐述&#xff0c;注意描述自己在项目中承担的职责&#xff0c;简历的模板尽量选择简洁的&#xff0c;毕竟程序员大部分还是喜欢简单明了的。推荐boss直聘&#xff0c;我觉得…

java接口开发规范,干货满满

第一个模块&#xff1a;数据库 1.1 腾讯数据库面试问题 解释ACID四大特性 原子性的底层实现 数据库宕机后恢复的过程 如何保证事务的ACID特性 MySQL日志类型 这5个题目相对来说是比较普遍的&#xff0c;这里我就不一一给出答案了&#xff0c;给大家看下我的那个数据库学…

001 makefile的使用

标题 标题 当我们有多个源程序时&#xff0c;用gcc每个都编译&#xff0c;这样我们没有修改过的源文件也得重新编译一次&#xff0c;很麻烦&#xff0c;这时候写makefile就派上了用场&#xff0c;可以大大的提高我们的编码和调试速度。( 注意&#xff1a;头文件并不参加链接和…

java接口的修饰符可以为,附架构师必备技术详解

第一章 MySQL入门与初步 1.1 MYSQL 简介 1.2 关系数据库管理系统 1.3 MYSQL 使用的 SQL 语言 1.4 MYSQL 数据处理 第二章 MySQL的安装 2.1 MYSQL 系统的安装布局 2.2 安装 MYSQL 系统的分发 2.3 安装后期的的设置与测试 2.4 系统的升级 2.5 在同一台机器上运行多个 MYSQL 服务…

ALSA【一】

ALSA是Advanced Linux Sound Architecture 的缩写&#xff0c;目前已经成为了linux的主流音频体系结构。 在内核设备驱动层&#xff0c;ALSA提供了alsa-driver&#xff0c;同时在应用层&#xff0c;ALSA为我们提供了alsa-lib&#xff0c;应用程序只要调用alsa-lib提供的API&…

java接口的定义与实现,学习路线+知识点梳理

Spring框架自诞生以来一直备受开发者青睐&#xff0c;有人亲切的称之为&#xff1a;Spring 全家桶。Spring更是避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新&#xff0c;很多研发人员把spring看作心目中最好的Java项目&#xff0c;没有之一。 **可以毫不夸张…

第3章 文件IO | 001 文件描述符

概述 在Linux系统中一切皆可以看成是文件&#xff0c;文件又可分为&#xff1a;普通文件、目录文件、链接文件和设备文件。文件描述符&#xff08;file descriptor&#xff09;是内核为了高效管理已被打开的文件所创建的索引&#xff0c;其是一个非负整数&#xff08;通常是小整…

java提取图片中的文字,深入分析

第一个暴击&#xff1a;Spring 上一份Spring的手绘思维脑图&#xff08;就像是个知识大纲总结&#xff09;&#xff0c;预览一下Spring的知识点&#xff0c;心里有个谱。不过这边我是采用的截图方式&#xff0c;为了把全部的内容都截取出来&#xff0c;所以整个就比较小&#…

java基础入门传智播客答案,GitHub已标星16k

选择 在现在这个浮躁而又拜金的社会&#xff0c;我相信很多人做技术并非出于热爱&#xff0c;只是被互联网的高薪吸引&#xff0c;毕竟技术岗位非常枯燥&#xff0c;不仅要面对奇奇怪怪的需求&#xff0c;还要不停的充实自己避免被淘汰。所以想要吃好技术这碗饭并不容易。 我…

java基础入门第二版二手,细节爆炸

一面&#xff1a;70分钟 突击电话面试 正思考着项目功能模块&#xff0c;阿里面试官打来了电话&#xff0c;开始了阿里一面。 阿里面试官自我介绍&#xff0c;介绍了5分钟左右&#xff0c;部门的情况&#xff0c;主要的业务 提问开始 会哪些操作系统 Linux会一点说一下操作指…

进程通讯:管道

管道&#xff0c;通常指无名管道&#xff0c;是 UNIX 系统IPC最古老的形式。 1、特点&#xff1a; 它是半双工的&#xff08;即数据只能在一个方向上流动&#xff09;&#xff0c;具有固定的读端和写端。它只能用于具有亲缘关系的进程之间的通信&#xff08;也是父子进程或者兄…

java基础入门答案谭晓芳,原理+实战讲解

One&#xff1a;JVM实践思维图&#xff08;完整版&#xff09; Two&#xff1a; 走近Java 概述 Java技术体系Java发展史Java虚拟机家族&#xff1a;&#xff08;Sun Classic/Exact VM、HotSpot VM、Mobile/Embedded VM、BEA JRockit/IBM J9 VM、BEA Liquid VM/Azul VM、Apache…

java基础常问面试题,面试必问

一、首先本职工作一定要做好做精 本人之前在干兼职的时候&#xff0c;也忽视过本职工作&#xff0c;从而导致自己落后平均技术水平&#xff0c;虽然之后迎头赶上&#xff0c;但这不能不算是个遗憾。前在接一些活的时候就感觉技术的重要性了&#xff0c;如果当年我技术再好些&a…

java基础教程哪个好,吐血整理

RabbitMQ&#xff1a; 优点&#xff1a;轻量&#xff0c;迅捷&#xff0c;容易部署和使用&#xff0c;拥有灵活的路由配置 缺点&#xff1a;性能和吞吐量较差&#xff0c;不易进行二次开发 RocketMQ&#xff1a; 优点&#xff1a;性能好&#xff0c;稳定可靠&#xff0c;有活…

java基础教程哪个好,面试必会

如何才可以进大厂&#xff1f; 答案其实也很简单&#xff0c;能力学历。不知道大家有没有发现&#xff0c;大厂的一些部门对于学历要求已经放低了&#xff0c;阿里的一些部门同样也招大专学历的程序员&#xff0c;当然肯定也是因为他的能力足够出色。 对于准备秋招的你来说&a…

java基础教程第三版耿祥义,后台开发JAVA岗

Java虚拟机内存模型 Java虚拟机内存模型中定义的访问操作与物理计算机处理的基本一致&#xff01; Java中通过多线程机制使得多个任务同时执行处理&#xff0c;所有的线程共享JVM内存区域main memory&#xff0c;而每个线程又单独的有自己的工作内存&#xff0c;当线程与内存区…

java基础案例教程黑马程序员案例答案,真香

掌握核心知识 1、90%几率面试被问&#xff0c;吃透原理&#xff0c;面试不慌&#xff08;Spring原理&#xff09; 2、大厂必问Redis&#xff0c;赶紧码起来&#xff08;Redis核心原理&#xff09; 3、MySQL从入门到实战都在这篇&#xff0c;面试笑谈优化 当然核心知识不止这三…

java基础的三个框架,进阶学习资料!

阿里巴巴一面 自我介绍这个就不说了&#xff0c;开头必问的说一下StringBuilder 和 StringBufferSpring bean加载&#xff0c;实例化的过程Spring AOP源码看过吗java内存模型说一下如果给你一个map&#xff0c;里面有很多很多对象&#xff0c;那么这个map存放在哪了解GC算法吗…

实验3 | 由遍历序列构造二叉树

二叉树构造定理&#xff1a; 定理7.1&#xff1a;任何n&#xff08;n>0&#xff09;个不同结点的二又树&#xff0c;都可由它的中序序列和先序序列唯一地确定。 定理7.2&#xff1a;任何n&#xff08;n&#xff1e;0&#xff09;个不同结点的二又树&#xff0c;都可由它的…

万字总结!java让字符串反转

Java基础 JDK 和 JRE 有什么区别&#xff1f; 和 equals 的区别是什么&#xff1f;两个对象的 hashCode()相同&#xff0c;则 equals()也一定为 true&#xff0c;对吗&#xff1f;final 在 java 中有什么作用&#xff1f;java 中的 Math.round(-1.5) 等于多少&#xff1f;Stri…