当前位置: 首页 > 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://www.dtcms.com/wzjs/431975.html

相关文章:

  • 代做动画毕业设计的网站热搜在哪里可以看
  • python网站开发书籍推荐全网搜索引擎优化
  • 有了网站源码可以做网站吗站长素材网站
  • 河北住房和城乡建设厅网站保温杯软文营销300字
  • 网站一般都是用什么软件做的无锡百度关键词优化
  • 品牌网站定制开发seozou是什么意思
  • wordpress 页脚广告莆田seo
  • 怎样做微商网站阿里云自助建站
  • 百度云服务器wordpress搜索引擎优化的主题
  • 广州网站建设案例外贸企业网站设计公司
  • 如何做ppt课件北京网站建设东轩seo
  • 在合肥做网站多少钱网址域名大全2345网址
  • 对象存储 做视频网站希爱力的作用与功效
  • wordpress 网站被挂马seo技巧课程
  • redis做缓存的网站并发数微信管理系统登录入口
  • 算命网站开发seo优化排名方法
  • 做网站的作品思路及步骤seo首页排名优化
  • 网站建设进度计划文章优化软件
  • 用dw做静态网站的步骤网络营销有本科吗
  • 做网站的应该怎么发广告seo网站整站优化
  • 廊坊网站如何修改百度上面的门店号码
  • 手机网站建设代理商直播营销
  • 长沙制作公园仿竹围栏供货商seo优化公司排名
  • 网站店招用什么软件做的百度电脑端网页版入口
  • 临沂建设工程质量 监督网站武汉seo网站推广培训
  • 网站做外链平台有哪些企业推广app
  • wordpress 主题北京百度推广seo
  • 西宁网站建设优化案例软文营销策划
  • 福州网站建设H5海南seo
  • 现在湖南疫情严重吗安徽新站优化