1.2跑个简单的程序

1、程序编程风格

在写程序时,有个良好的编程习惯,对自己对别人都有好处。华为的编程规范就很不错,可以借鉴,没必要完全模仿。看别人代码往往是很折磨人的,如果自己的代码不用注释也能让别人清晰明确了解,不仅节约别人时间,也可以免去自己被打扰。

a、 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。尽可能给出描述性名称,不要节约空间,让别人很快理解你的码更重要。其中有些单词是大家公认的缩写,常用单词的缩写必须统一。协议中的单词的缩写与协议保持一致。对于某个系统使用的专用缩写应该在注视或者某处做统一说明。

示例:一些常见可以缩写的例子:

argument 可缩写为 arg

buffer 可缩写为 buff

clock 可缩写为 clk

command 可缩写为 cmd

compare 可缩写为 cmp

configuration 可缩写为 cfg

device 可缩写为 dev

error 可缩写为 err

hexadecimal 可缩写为 hex

increment 可缩写为 inc、

initialize 可缩写为 init

maximum 可缩写为 max

message 可缩写为 msg

minimum 可缩写为 min

parameter 可缩写为 para

previous 可缩写为 prev

register 可缩写为 reg

semaphore 可缩写为 sem

statistic 可缩写为 stat

synchronize 可缩写为 sync

temp 可缩写为 tmp

b、文件命名统一采用小写字符

全局变量应增加“g_”前缀。

静态变量应增加“s_”前缀。

避免函数的代码块嵌套过深,新增函数的代码块嵌套不超过

4

层。

c、 一个函数仅完成一件功能

重复代码应该尽可能提炼成函数。 避免函数的代码块嵌套过深,新增函数的代码块嵌套不超过4层。

d、程序不要直接使用魔鬼数字。而关于使用宏,应尽可能使用函数代替宏定义的运算,尽量使用const定义代替宏,方便变量跟踪。

e、 所有的if ... else if结构应该由else子句结束 ;switch语句必须有default分支。

f、 时刻注意表达式是否会上溢、下溢。

1、先say hi

每个程序运行都一个默认入口函数,c语言中默认的入口函数就是main。至于为什么一定要是main,没有一定,只是语言设计的时候已经约定好的事。

一个程序从源码到可执行文件,必须经过 C源程序->编译预 处理->编译->优化程序->汇编程序->链接程序->可执行文件 这样的流程。

下面先写个最简单的程序。逐步的分析。

这就是源码阶段。这部分由程序员决定。

虽然很简单,但很多人在写main的时候根本不会去考虑对函数的参数检查,或直接忽视参数,这样不是很安全。上面的宏,只是为了测试,实际应用中不能这样写。

.编译预处理  读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。在这一步中,会对宏定义指令、条件编译指令、头文件包含指令(预编译程序将把头文件中的定义统统都加入到它所产生的输出文件中,源程序就算只是添加stdio.h文件头也会增加几百行代码)、特殊符号(例如在源程序中出现的LINE标识)进行还原。

和上面对比,里面的宏已经被替换掉了。头文件呢,太长了,看下面提示的行数就知道了。

这条命令将预文件编译成汇编,文件如果不指定,那么会生成同名的文件后缀为.s。这部分是由系统的编译工具也就是gcc内部策略决定汇编代码的样子。

虽然预编译的内容长度很吓人,编译出来的汇编代码并不多。

gcc  -O 指定优化处理

-O0不优化 -O1或-O 一级优化 -O2 二级优化...-O3,-O4

级别越高,,代码越优,编绎时间越长。

这个步骤就是优化前面生成的汇编文件的源码,同时生成目标文件,一次性完成了汇编过程和链接以及生成执行文件过程。

其中,优化处理是编译系统中一项比较艰深的技术。它涉及到的问题不仅同编译技术本身有关,而且同机器的硬件环境也有很大的关系。优化一部分是对中间代码的优化。这种优化不依赖于具体的计算机。另一种优化则主要针对目标代码的生成而进行的。

而汇编处理实际上指把汇编语言代码翻译成目标机器指令的过程。对于被翻译系统处理的每一个C语言源程序,都将最终经过这一处理而得到相应的目标文件。目标文件中所存放的也就是与源程序等效的目标的机器语言代码,也就是二进制码。

至于链接过程, 一般都会默认链接系统的底层库glibc,这是一个很庞大的c函数库,分布在系统的目录结构中。在配置完善的环境中编程,很多细节程序根本就不用考虑。当程序编译链接的时候 加上 -nostdlib不要使用标准库的时候,再简单的程序也会大量的提示错误。出现大量的重定义,这就是和标准库之间的冲突。

来个简单的hello world。这个就写到这,以后再补充。

时间: 2024-10-13 11:51:45

1.2跑个简单的程序的相关文章

用一个简单小程序谈import和from...import的区别

今天在自己写代码的过程中,设计到随机种子数量(参数),因为一个文件中可能用到这个参数不止一次甚至是不止一个文件会用到这个参数.对于训练一个数据集来说,如果当你的性能跑的差不多的话,肯定会改这个参数,那如果你在函数中给这个参数直接赋了值,后期改的时候牵动会很大,所以这个时候就要想着在另一个文件中单独定义这个参数,在其他文件中来调用.这个时候就涉及到了在一个文件中导入另一个文件中包含的某些功能比如类和函数. 自己特意写了简单的程序帮理解:先说明我是在test1文件中定义两个函数sum1()和sum2

初学Java:整理的几个简单小程序以及初学心得

整理这几天里写的几个小程序,都是循环练习//设N是一个四位数,它的9倍恰好是其反序数//(例如:1234的反序数是4321),求N值package Azhi;public class Job_5 {public static void main(String[] args) { for(int n=1000;n<=9999;n++){ int ge=n%10; int shi=n%100/10; int bai=n%1000/100; int qian=n/1000; int temp=ge*1

单片机 学习笔记(二)——简单小程序

今天收获了单片机的几个简单小程序:     延时程序: void Delay(unsigned int xx) //输入 xx :ms { while(xx--) { Delay1ms(); } } void Delay1ms() //@11.0592MHz 1ms { unsigned char i, j; _nop_(); _nop_(); _nop_(); i = 11; j = 190; do { while (--j); } while (--i); } 流水灯程序: #include

JavaSE - 一个简单的程序对新手的启发

一个简单的程序: 题目:现在完成一个简单的程序,可以输出两个数字的乘方. public class TestJava{ public static void main(String args[]){ int num = 10 ; // 定义整型变量 num = 30 ; // 修改变量的内容 System.out.println("num的内容是:" + num) ; System.out.println("num * num = " + num * num) ;

IOS 霓虹灯简单小程序

在RootViewController.m文件中 - (void)viewDidLoad//视图加载方法 - (void)viewDidLoad { //设置红色 UIView *viewRed = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 120, 30)]; viewRed.backgroundColor = [UIColor redColor]; [self.view addSubview:viewRed]; //设置橙色 UIVi

利用命名管道实现进程间的通信(简单聊天程序的实现)

管道的本质是一种文件,通常是指把一个进程的输出直接传递给另一个进程的输入. 命名管道(named pipe)是一种特殊的文件类型(FIFO文件),它在文件系统中以文件名的形式存在. 下面是Linux中命名管道的文件格式: 通过命令行创建命名管道可以通过mkfifo命令,函数调用如下所示: 1 #include <sys/types.h> 2 #include <sys/stat.h> 3 4 int mkfifo(const char *filename,mode_t mode);

基于html5 localStorage , web SQL, websocket的简单聊天程序

new function() { var ws = null; var connected = false; var serverUrl; var connectionStatus; var sendMessage; var connectButton; var disconnectButton; var sendButton; var open = function() { var url = serverUrl.val(); ws = new WebSocket(url); ws.onope

JavaScript-1.最简单的程序之网页弹出对话框,显示为Warning---ShinePans

show和set命令是两条用于维护SQLPlus系统变量的命令 : SQL> show all --查看所有系统变量值 SQL>show user --显示当前连接用户 SQL>show error --显示错误(编译function,procedure,package,pl/sql的时候,可以查看具体的错误提示) SQL>set sqlprompt SQL  --设置默认提示符,默认值就是SQL SQL>set linesize 1000 --设置屏幕显示行宽,默认100

简单应用程序的设计 -重复前缀

重复前缀 由于串操作指令只能每次对字符串的一个字符进行处理,所以使用了一个循环,以便完成对整个字符串的处理,为了进一步提高效率,8086和8088还提供了重复指令前缀,重复指令前缀可以加载串操作指令指令之前,已达到重复执行其后串操作指令的目的 重复前缀REP REP用作为一个串操作指令的前缀,它重复其后面的串操作指令动作,每一次重复都先判断CX是否为0,如果为0 就结束重复,否则CX的值就减1,重复其后面的串操作指令,所以CX等于0 时,就不执行其后面的字符操作指令 重复前缀REP主要用在传送指