linux命令编译C语言程序

C语言简介:

BCPL->newB->C->UNIX->Linux->gcc
C语言专门编写操作系统的语言,所以天生适合对硬件编程,也以运行速度快著称,也非常适合实现数据结构和算法。
由于出现时间过早,有很多缺陷,也没想普通人会使用C语言编程,因此存在着些陷井,但前辈总结了一些避免的经验《C语言陷井和缺陷》。

自由源于自律

C89语法标准,也是gcc默认的语法标准。
C99语法标准,对C语言的扩展和增强 std=gnu99。
C11语法标准,全新的升级。

第一个C程序:

#include <stdio.h>

程序员所编写的代码不是标准的C代码,需要一段程序反它释放成标准的C代码,负责翻译的程序叫预处理器,翻译的过程叫预处理,被释翻译的代码叫预处理指令,以#号开头的都是预处理指令。

#include 的功能就把一个头文件导入到当前文件。

#include “xxx.h” 先当前路径下加载xxx.h文件,如果没有再从系统指定的 路径下加载xxx.h文件。

#include <> 从系统指定的路径下加载xxx.h文件。

操作系统通过设置环境变量来指定加载头文件的路径。

stdio.h
    头文件:以.h结尾,里面存储是一些辅助性的代码,绝大多数是函数的声明(也就是函数的开头)。源文件:以.c结尾,里面记录的是功能性的代码。C语言标准委员会为C语言以函数形式提供了一些基础功能,这些函数被封装在libc.so库文件中。有很多头文件负责对libc.so进行说明,stdio.h就是其中一个,常用的还有stdlib.h、string.h。stdio.h负责对输入输出功能的函数进行说明,standard input output。
int main()
{printf("Hello World!\n");   return 0;
}

main函数:

    C语言以函数以单位管理代码,一个函数就一段具有某项功能的代码段。main函数是程序的执行入口,有且只有有一个。int 是一种数据类型,它表示main的执行结果是一个整数。return 功能有两个:1、结束函数的执行 2、返回一个数据给函数的调用者main函数由操作系统调用,它的返回值给了操作系统,反映了该程序是怎么结束的,通常有三种:正数 出现异常0    一切正常负数 出现错误echo $? 查看上一程序main函数的返回值。printf/scanf是标准库中的函数,负责输入、输出数据,用来调试程序。
转义字符:键盘上没有一些符号,有一些特殊字符来表示,这些特殊字符叫转义字符,\n就是其中一个。\n 换行\r 回到行首\t 制表符,对来自动对齐数据\a 铃响%% 显示一个%\\ 表示一个\\b 退一个字符
C语言以分号作为一行代码的结束,使用大括号划分代表区域。

编译器:

负责把人能看懂的记录代码的文本文件,翻译成计算机能看懂二进制文件,由预处理器、编译器、链接器组成。
gcc是GNU社区为了编译Linux代码而开发一款免费的编译器,默认采用C89语法,-std=gnu99可以设置C99语法。
常用的参数:-E 显示预处理结果-c 只编译不链接-o 设置编译结果的名字-I 指定头文件的加载路径-S 生成汇编代码-l 指定要使用库,-lm 使用数学库-Wall 以严格的标准来检查代码,显示更多的警告提醒-Werror 把警告当错误处理-std 指定编译语法标准

C代码变成可执行程序的过程:

1、预处理 把源文件翻译成预处理文件gcc -E code.c 显示预处理结果gcc -E code.c -o code.i 生成以.i结尾的预处理文件
2、编译 把预处理文件翻译成汇编文件gcc -S code.i 生成以.s结尾的汇编文件
3、汇编 把汇编文件翻译成二进制的目标文件gcc -c code.s 生成以.o结尾的目标文件
4、链接 把若干个目录文件合并成一个可执行程序gcc a.o b.o ... 默认生成一个a.out的可执行程序

C文件类型:

.h 头文件
.h.gch 头文件的编译结果,它会被优先使用
.c 源文件
.i 预处理文件
.s 汇编文件
.o 目标文件
.a 静态库
.so 共享库

感谢关注~~会持续、定期更新

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

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

相关文章

PHP中插件机制的一种实现方案

插件&#xff0c;亦即Plug-in&#xff0c;是指一类特定的功能模块&#xff08;通常由第三方开发者实现&#xff09;&#xff0c;它的特点是&#xff1a;当你需要它的时候激活它&#xff0c;不需要它的时候禁用/删除它&#xff1b;且无 论是激活还是禁用都不影响系统核心模块的运…

python模块学习之glob模块

glob模块 功能描述&#xff1a;glob模块可以使用Unix shell风格的通配符匹配符合特定格式的文件和文件夹&#xff0c;跟windows的文件搜索功能差不多。glob模块并非调用一个子shell实现搜索功能&#xff0c;而是在内部调用了os.listdir()和fnmatch.fnmatch()。查看我之前写的fn…

根据一个属性,剔除 Json 中重复元素(删除 JSON 中重复的部分)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 [ {"data" : {"code" : "044","post" : "xxx领导", "email" : "…

给生命一个助跑的过程(图)

在高原的上空&#xff0c;常常可以见到秃鹫在翱翔。 秃鹫又叫座山雕&#xff0c;也被人誉为“神鹰”&#xff0c;是高原上体格最大的猛禽。它们往往栖息在海拔2000-5000多米的高山原上&#xff0c;体重达到7-11公斤。秃鹫张开翅膀后&#xff0c;整个身体有2米多长&#xff0c;…

ELK 构建 MySQL 慢日志收集平台详解

ELK 介绍 ELK 最早是 Elasticsearch&#xff08;以下简称ES&#xff09;、Logstash、Kibana 三款开源软件的简称&#xff0c;三款软件后来被同一公司收购&#xff0c;并加入了Xpark、Beats等组件&#xff0c;改名为Elastic Stack&#xff0c;成为现在最流行的开源日志解决方案&…

数据类型转换规则C语言

一、数据类型 为什么对数据进行分类&#xff1a;节约存储空间&#xff0c;提高运行速度。整型&#xff1a;signedsigned char 1 -128~127signed short 2 -32678~32767signed int 4 正负20亿signed long 4/8 正负20亿/9…

Visual Studio 的码云扩展 V1.0.85 发布

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; >>> Visual Studio 的码云扩展 V1.0.85 已发布&#xff1a; 针对扩展进行了SDK部分的重写修正克隆窗体和快捷方式的图标颜色随主题变化修正快捷方式 优化用户登录和token处理机制调整了…

用 FastJSON 将 JSON 字符串转换为 Map

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 本文是利用阿里巴巴封装的FastJSON来转换json字符串的。例子如下&#xff1a; import com.alibaba.fastjson.JSON; import com.aliba…

shark恒破解笔记4-API断点GetPrivateProfileStringA

这小节是通过断在GetPrivateProfileStringA&#xff0c;然后找到注册码的。 1.运行程序输入假码111111&#xff0c;提示重启。通过这判断这是一个重启来验证的&#xff0c;那么它是如何来验证的呢&#xff1f;观察程序目录下会发现有一个名为“config.ini"的文件 那么判断…

开关语句、循环语句、goto

复习&#xff1a; 1、数据类型&#xff1a;signed char 1 %hhd -128~127signed short 2 %hd -32768~32767signed int 4 %d 正负20亿signed long 4 %ldsigned long long 8 %lld 9天开头的19位数unsigned char …

成功男士的健康心理特征

自信&#xff1a;他们普遍都有很强的自信心&#xff0c;有时有咄咄逼人的感觉。 急迫感&#xff1a;他们通常很急地想见到事物的成果&#xff0c;因此会给别人带来许多的压力。他们信仰“时间就是金钱”&#xff0c;不喜欢也不会把宝贵的时间浪费在琐碎的无聊事情上。 脚踏实…

DBlink的创建与删除

创建方式一&#xff1a; create [public] database link link名称 connect to 对方数据库用户identified by 对方数据库用户密码 using 对方数据库ip:端口/服务名; 创建方式二&#xff1a; create [public] database link link名称 connect to 对方数据库用户identified by 对…

kong 启动报错 could not retrieve server_version: timeout

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错&#xff1a; nginx: [error] init_by_lua error: /usr/local/share/lua/5.1/kong/init.lua:169: [postgres error] could not ret…

2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(监听Wi-Fi和APP的数据)

1-STM32物联网开发WIFI(ESP8266)GPRS(Air202)系统方案安全篇(来看一下怎么样监听网络数据,监听电脑上位机软件的数据) 因为那个软件只能监听咱自己电脑上的数据,所以咱就用电脑开个热点,然后让Wi-Fi和APP连接咱电脑的热点,这样就能监听数据了 电脑开个热点 手机APP连接这个热点…

数组越界的后果

数组&#xff1a; 什么是数组&#xff1a;变量的组合&#xff0c;是一种批量定义变量的方式。 定义&#xff1a;类型 数组名[数量];int arr[5]; 使用&#xff1a;数组名[下标];下标&#xff1a;从零开始&#xff0c;范围&#xff1a;0~数量-1。 遍历&#xff1a;与for循环配合…

职场心理:12个建议或许能改变你的一生(图)

心理引言&#xff1a;如何更好实现自我的职业目标&#xff1f;听起来很简单&#xff0c;回答也很简短&#xff0c;就是你必须清楚你最终想要实现什么&#xff1f;只要你这样做&#xff0c;你就已经开始从看的见和看不见的两条路径来实现你的目标。职场是一种特殊的环境&#xf…

python—包

1.模块 可以增加代码的重复利用的方式 避免命名冲突 如何定义模块 模块就是一个普通文件&#xff0c;所以任何代码可以直接书写规范 函数&#xff08;单一的功能&#xff09;类&#xff08;相似功能的组合&#xff0c;或者类似业务模块&#xff09;测试代码 如何使用模块 模块…

Docker Installation : Docker 中安装并启动 Kong

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Details about how to use Kong in Docker can be found on the DockerHub repository hosting the image: kong. We also have a Docke…

tomcat是否有必要配置环境变量(摘)

之前发表了一篇关于如何安装和配置Tomcat的文章&#xff0c;而最近在开发项目的时候总是报错。后来被公司的大神问了一句&#xff1a;是谁告诉你Tomcat是需要配置环境变量的&#xff1f; 作为新手的我瞬间整个人都不好了&#xff01;于是偷偷百度了一下&#xff0c;终于找到了关…

走迷宫+推箱子

两个小游戏的大致逻辑 走迷宫: 1、定义二维字符数组作为迷宫 2、定义变量记录老鼠的位置 3、获取游戏开始时间 3、进入循环 1、清理屏幕&#xff0c;使用system调用系统命令。 2、显示迷宫(遍历二维字符数组) 3、检查是否到达出口 获取游戏结束时间&#xff0c;计算出走出迷宫用…