当前位置: 首页 > wzjs >正文

常州做网站建设的公司网站导航栏 字体

常州做网站建设的公司,网站导航栏 字体,郴州专业的网站建设,易语言如何做验证系统官方网站程序的编译环境和执行环境 翻译环境:在这个环境中源代码被转换成可执行的机器指令 执行环境:用于实际执行代码 详解编译链接 翻译环境 注意: 1.组成一个程序的每个源文件通过编译过程分别转换成目标代码。 2.每个目标文件由链接器捆绑在一…

程序的编译环境和执行环境
翻译环境:在这个环境中源代码被转换成可执行的机器指令
执行环境:用于实际执行代码

详解编译+链接

翻译环境
在这里插入图片描述
注意:
1.组成一个程序的每个源文件通过编译过程分别转换成目标代码。
2.每个目标文件由链接器捆绑在一起,形成一个单一而完整的可执行程序。
3.链接器同时也会引入标准c函数中任何被该程序用到的函数,而且它可以搜索程序员的个人数据库,将其需要的函数也链接到程序中。
在这里插入图片描述
运行环境
程序执行的过程:
1.程序必须载入内存中。在有操作系统的环境中,一般这个由操作系统完成。在独立的环境中,程序的载入必须手动安排,也可能通过可执行代码置入只读内存来完成。
2.程序的执行开始,接着调用main函数。
3.开始执行程序代码。这个时候程序将使用一个运行时堆栈(stack)存储函数的局部变量和返回地址,程序同时也可以使用静态(static)内存,存储与静态内存的变量在程序的整个执行过程一直保留他们的值。
4.终止程序。正常或意外终止main函数。

预处理详解

预定义符号

__FILE__ //进行编译的源文件  前后各两条下划线!
__LINE__//文件当前的行号
__DATE__  //文件被编译的日期
__TIME__ //文件被编译的时间
__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义。

这些预定义符号都是语言内置的,例:

#include <stdio.h>
int main()
{printf("file:%s line:%d\n", __FILE__, __LINE__);return 0;
}

#define定义标识符

#define MAX 1000  
#define reg register  //为 register这个关键字,创建一个简短的名字
#define do_forever for(;;)    //用更形象的符号来替换一种实现
#define CASE break;case     //在写case语句的时候自动把 break写上。     
#define DEBUG_PRINT printf("file:%s\tline:%d\t \date:%s\ttime:%s\n" ,\__FILE__,__LINE__ ,       \__DATE__,__TIME__ ) // 如果定义的 stuff过长,可以分成几行写,除了最后一行外,每行的后面都加一个反斜杠(续行符)。

define后面不加分号!!!
#define定义宏
#define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)。

#define name( parament-list ) //stuff 其中的
parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中。

#define 替换规则
在程序中扩展#define定义符号和宏时,需要涉及几个步骤。

  1. 在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首先被替换。
  2. 替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值替换。
  3. 最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上述处理过程。
    注意
  4. 宏参数和#define 定义中可以出现其他#define定义的变量。但是对于宏,不能出现递归。
  5. 当预处理器搜索#define定义的符号的时候,字符串常量的内容并不被搜索。
    #和##
char* p = "hello ""world\n";
printf("%s",p);//输出的是 hello world

字符串是有自动连接的特点的。
##可以把位于它两边的符号合成一个符号,它允许宏定义从分离的文本片段创建标识符。
注: 这样的连接必须产生一个合法的标识符。否则其结果就是未定义的。
带副作用的宏参数
在这里插入图片描述
在这里插入图片描述

宏与函数对比
宏常被应用于执行简单的运算,比如在两个数中找出较大的一个。

#define MAX(a,b),((a)>(b)?(a):(b))

为什么不用函数来完成?原因有二:
1.用于调用函数和从函数中返回的代码可能比实际执行这个小型计算工作所需要的时间更多。所以宏比函数在程序的规模和速度方面更胜一筹。
2.更重要的是函数的形参必须声明为特定的类型。所以函数只能在类型合适的表达式上使用。反之,宏可以适用于整型,长整型,浮点型等可以用于>来比较的类型。宏和类型无关
宏相比函数的劣势:
1,每次使用宏的时候,一份宏定义的代码将插入程序中,除非宏比较短,否则可能大幅增加程序的长度。
2.宏是没法调试的。
3.宏由于类型无关,也就不够严谨。
4.宏可能会带来运算符优先级的问题,导致程序容易出错。
宏有时候可以做函数做不到的事情。比如:宏的参数可以出现类型,但是函数做不到。
在这里插入图片描述
在这里插入图片描述

#undef
这条指令用于移除一个宏定义

#undef NAME
//如果现存的一个名字需要被重新定义,那么它的旧名字首先要被移除。

在这里插入图片描述
条件编译
在编译一个程序的时候我们如果要将一条语句(一组语句)编译或者放弃是很方便的。因为我们有条件编译指令。
比如:调试性的代码,删除可惜,保留又碍事,所以我们可以选择性的编译。

#include <stdio.h>
#define __DEBUG__
int main()
{
int i=0;
int arr[10] = {0}; 
for(i=0; i<10; i++) 
{ 
arr[i] = i; 
#ifdef __DEBUG__ 
printf("%d\n", arr[i]);//为了观察数组是否赋值成功。   
#endif //__DEBUG__ 
} 
return 0;
}

常见的条件编译指令:

1.
#if 常量表达式
//...
#endif
//常量表达式由预处理器求值。 
如: 
#define __DEBUG__ 1 
#if __DEBUG__ //.. 
#endif 
2.多个分支的条件编译 
#if 常量表达式 
//... 
#elif 常量表达式 
//... 
#else 
//... 
#endif 
3.判断是否被定义 
#if   defined(symbol) 
#ifdef   symbol 
#if   !defined(symbol) 
#ifndef   symbol 
4.嵌套指令 
#if  defined(OS_UNIX) #ifdef OPTION1 unix_version_option1(); #endif #ifdef OPTION2 unix_version_option2(); #endif 
#elif defined(OS_MSDOS) #ifdef OPTION2 msdos_version_option2(); #endif 
#endif 

解决头文件重复包含
在这里插入图片描述


文章转载自:

http://7XigfJHj.Lkrmp.cn
http://gMXXpoyU.Lkrmp.cn
http://QMaddXiI.Lkrmp.cn
http://vO4YXAQI.Lkrmp.cn
http://D8fVBkZL.Lkrmp.cn
http://52KACZ1a.Lkrmp.cn
http://s3RC2XAb.Lkrmp.cn
http://JhvgbuAT.Lkrmp.cn
http://cOUQtNJm.Lkrmp.cn
http://il5iP3uY.Lkrmp.cn
http://XDMnz4BH.Lkrmp.cn
http://uwyGZ7Lm.Lkrmp.cn
http://vK94KKKV.Lkrmp.cn
http://HZxSaPqQ.Lkrmp.cn
http://nDfB0AZg.Lkrmp.cn
http://MOCZBLcQ.Lkrmp.cn
http://RLcmbdB2.Lkrmp.cn
http://1UsMx5ax.Lkrmp.cn
http://QG0y8Wa5.Lkrmp.cn
http://bnFqjxrk.Lkrmp.cn
http://ygbvPFH2.Lkrmp.cn
http://K1JugJ39.Lkrmp.cn
http://AJhGchAV.Lkrmp.cn
http://MxBLR4cc.Lkrmp.cn
http://vF8KbEAJ.Lkrmp.cn
http://3bD3dTEh.Lkrmp.cn
http://LZaByYT2.Lkrmp.cn
http://NFC8HGKN.Lkrmp.cn
http://6sVR6H9E.Lkrmp.cn
http://19AtK2Zt.Lkrmp.cn
http://www.dtcms.com/wzjs/730966.html

相关文章:

  • 宝塔可以做二级域名网站么营销网站制作教程
  • 淘宝官方网站登录注册如何架设网站服务器
  • 建站程序员招聘软文编辑
  • 贵 建设厅网站文件哈尔滨网站建设公司
  • 吉林网站建设哪家好wordpress后台错位
  • 建设网站网站怎样把html文件变成链接
  • 江西住房和城乡建设部网站首页青岛网站推广的价格
  • it培训机构出来的好找工作吗点击宝seo
  • 官方网站下载穿越火线wordpress会员等级插件
  • 山东工程网站建设湖南网站建设平台
  • 建设网站的费用调研wordpress怎么加友链
  • 网站网络推广方式方法沧州做网站公司
  • 网站页面模板织梦网站源码转换成wordpress
  • 网站做造价创新的南昌网站建设
  • 网站维护说明青海中小企业网站建设
  • 做网站的标准wordpress5.1友情链接
  • 网站建设怎么说服客户上海建网站制
  • 家具网站 模板wordpress网站统计插件
  • 网站建设写代码上海网站建设 找思创网络
  • 网站建设借鉴WordPress轻量企业主题
  • 网站模板英文手机跳转网站建设
  • 普洱网站建设优化网站开发中数据库的设计原则
  • 网站建设咨询公司地址鞍山seo优化
  • 贵阳网站制作系统做家居建材出口网站有哪些
  • 网站域名会赠送几个邮箱企业常用系统
  • 安徽平台网站建设费用企业网站 三合一
  • 天水做网站电话投资10元1小时赚百元
  • 快三彩票网站开发文字一键生成图片
  • 网站推销怎么做ppt英文站 wordpress seo优化
  • 沈阳网站优化 唐朝网络广州平面设计线下培训班