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

上海营销网站推广多怎样做一个简单的网站

上海营销网站推广多,怎样做一个简单的网站,做列表的网站,百度竞价什么时候开始的1.翻译环境 计算机能够执行二进制指令#xff0c;我们的电脑不会直接执行C语言代码#xff0c;编译器把代码转换成二进制的指令#xff1b; 我们在VS上面写下printf(hello world);这行代码的时候#xff0c;经过翻译环境#xff0c;生成可执行的exe文件我们的电脑不会直接执行C语言代码编译器把代码转换成二进制的指令 我们在VS上面写下printf(hello world);这行代码的时候经过翻译环境生成可执行的exe文件这个主要是编译器完成生成可执行的文件以后要进行运行这个运行主要是由我们的操作系统决定的 windows环境下面.c文件经过编译器cl.exe)的处理生成.obj的目标文件这个里面可能会有多个源文件每个源文件都会生成各自的目标文件这个过程就叫做编译目标文件和链接库经过链接器link.exe)的处理就生成了可执行文件这个过程叫做链接 2.预处理简介 编译其实是分3个过程的分别是预处理生成.i文件编译生成.s文件汇编生成.o文件 预处理的时候会展开头文件处理编译指令删掉我们写的注释通过这个地方我们也可以看出来注释是写给我们程序员自己看的并不会真正的到目标文件里面预处理主要是处理那些以#开头的指令 3.编译 词法分析语法分析语义分析主要是把C代码我们可以读懂转换成为汇编代码我们无法读懂 词法分析将源代码程序被通过扫描器简单的进⾏词法分析把代码中的字符分割成⼀系列 的记号关键字、标识符、字⾯量、特殊字符等 语法分析是以表达式为节点生成语法树 语义分析主要是进行数据类型的区分以及数据类型的匹配 汇编是把汇编代码转换成为机器指令机器指令就是我们常说的二进制指令 4.链接 解决一个项目里面多文件多模块之间可以相互调用进行地址和空间分配把多个目标文件进行合并这个时候我们就是合并相同的函数的地址会取函数的有效地址地址修订的过程就叫做重定位这样不同的函数之间就可以相互调用 5.预处理详细 1预处理符号 int main() {printf(%s\n, __FILE__);printf(%s\n, __DATE__);printf(%s\n, __TIME__);printf(%d\n, __LINE__);return 0; } 这些符号就是已经存在的我们可以直接进行使用第一个是打印文件的名字第二个是创建的日期第三个打印创建的日期第四个是行号这个日期和时间是文件被编译的瞬间的时间和日期 2#define #define可以定义符号常量这个符号在代码里面出现的时候都会被替换为对应的内容 #includestdio.h #define MAX 1000 #define ASD hello world int main() {printf(%d\n, MAX);printf(%s\n, ASD);return 0; } 对于#define定义符号的时候我们不需要在结尾加上分号这个时候加上分号就是多余的 由此可见如果加上分号会让编译器默认为你的定义是后面带上分号的1000这个问题很常见例如下面的判断语句 这个简单的if.....else语句报错的原因就是我们加了分号因为在默认的情况下如果没有中括号,if只会执行一条语句但是这个地方MAX自带分号结尾又有一个分号相当于是2个语句所以轮到else执行的时候就会报错 #define也可以定义宏下面就是一个具体的案例 宏的定义类似于函数但是括号里面没有参数预处理以后就变成了int reta*a;就相当于把a带入define里面的x把宏体替换回主函数里面的ret语句下面我们使用表达式进行代换看看结果 可能在我们的直觉里面a16,6*636但是最后打印输出的结果确是11为什么会这样呢实际上他在替换的时候是这样进行替换的a1*a1,我们计算的时候会把a1看作一个整体但是预处理不会他会先计算乘法1*a5,55111,打印输出结果如果我们想要得到正确结果我们可以加上中括号就可以了 因此用于对数值表达式进行求值的宏定义的时候我们应该带上括号否则参数会和就近的运算符结合进行运算可能无法达到我们想要的结果 3带有副作用的宏 什么叫做副作用呢我们通过一个简单的例子理解一下 这个例子里面第一个表达式计算以后a11,b10,第二个表达式计算以后a11,b11,这个时候我们就可以说具有副作用因为他在赋值的同时把b的数值也给改变了 下面我i们学习一下宏的副作用 这个例子是想要说明使用宏求最大值的时候这个例子里面替换以后就是 a(b)?(a):(b)a以后先使用后加加就是带进去的值是3a的值是4同理b带进去的值是5b的值是6但是35显然不对因此执行后半句也就是b,这个时候b本来就是6了加加就会变成7由此可见这个过程加加执行了2次可能并不是我们想要的结果而且具有不确定性如果是前面的大就会是a执行2次我们称这种现象叫做宏的副作用 4宏和函数 宏和函数其实是各有利弊的概括起来我们可以这样讲通过前面的一些案例我们也发现了宏和函数貌似具有一些相似的功能我们在处理一些比较简单的问题的时候,我们可以使用宏因为相比较于函数宏的执行速度和效率会比函数高因为函数就会涉及到函数的调用以及函数的返回这些过程我们使用宏都不会遇到因此使用宏可以节省时间但是宏自身也是有弊端的因为宏对于参数的要求不像函数那样严格因此我们使用的时候可能会出现问题而且像我们前面提到的宏的使用可能会出现我们难以预料的副作用还涉及运算符号的优先级的结合问题但是函数会在类型完全匹配的时候才回去进行调用这个方面函数更加保险 5命名规则 这个是我们一般遵守的规则这个可以用来区分一般的函数和宏的定义宏在定义的时候一般都是全部大写但是函数不会全部大写 6条件编译 下面我们认识一些常见的条件编译指令 #if  #endif指令 int main() { #if 0int a 10;int b 20;printf(%d, a b);return 0; #endif }这个地方因为在#if的后面是0所以在条件编译里面的代码就不会被执行了 #define xxxx #if xxxxx ********** #endif 这个条件编译指令可以达到相同的效果 #define MAX 0 int main() { #if MAXint a 10;int b 20;printf(%d, a b);return 0; #endif } 7头文件的包含 我们使用的包含自己的文件就是使用双引号包含库里面的文件就是使用尖括号这两者的区别就是使用双引号包含会先从当前的文件路径下面进行寻找找不到的话再到库里面去寻找使用尖括号就会直接到库里面去寻找当然#includestdio.h我们都知道这个是库里面的但是如果我们使用双引号代替尖括号也可以运行因为在当前的目录下面找不到最后还是会到库里面去找但是这样就浪费时间我们一般不会这样做 我们不同的文件相互包含可能会出现头文件被多次包含的问题这样做的话如果头⽂件⽐较⼤这样预处理后代码量会剧增我们在头⽂件中添加 ifndef/define/endif解决被多次包含的问题当然我们也是可以在头文件里面添加pragma once这样我们的头文件就只会被包含一次了 8取消宏定义 #define MAX 10 int main() {int a 10;int b 20; #undef MAXfor (int i 0; i MAX; i)//这里会报错{a;b;}printf(%d, a b);return 0; } 我们在开头定义MAX宏我们可以使用#undef指令取消宏的定义取消之后如果我们继续使用的话就会报错了 9#和## 我们在认识这两个符号之前我们先铺垫一些只是这个会在#和##的代码里面使用到 int main() {printf(what are you doing\n);printf(what are you doing\n);return 0; } 打印结果 这个铺垫就是这两种写法的效果是一样的也就是说如果都是字符串系统会自动的进行合并字符串的操作接下来我们了解了这一点再来学习这两种符号的用法 我们首先对比一下使用#和不使用的区别 不使用 使用#的打印结果 因此我们可以概括#运算符所执⾏的操作可以理解为”字符串化“。 ##的用法把位于它两边的符号合成⼀个符号它允许宏定义从分离的⽂本⽚段创建标识符。 ## 被称 为记号粘合 写⼀个函数求2个数的较⼤值的时候不同的数据类型就得写不同的函数。 int int_max(int x, int y) {return xy?x:y; } float float_max(float x, float y) {return xyx:y; } 但是这样写起来太繁琐了现在我们这样写代码试试 //宏定义 #define GENERIC_MAX(type) \ type type##_max(type x, type y)\ { \return (xy?x:y); \ } 注释这里的\是续行符 GENERIC_MAX(int) //替换到宏体内后int##_max ⽣成了新的符号 int_max做函数名 GENERIC_MAX(float) //替换到宏体内后float##_max ⽣成了新的符号 float_max做函数名 int main() {//调⽤函数int m int_max(2, 3);printf(%d\n, m);float fm float_max(3.5f, 4.5f);printf(%f\n, fm);return 0; } 这样利用##符号我们同样可以实现不同类型数据的比较的目的。
http://www.w-s-a.com/news/24036/

相关文章:

  • 微网站怎么用在线crm管理系统
  • 中国城乡建设部人力网站首页如何利用某个软件做一个网站
  • 个人承接网站建设wordpress editor
  • 建站主机 wordpress专业的菏泽网站建设公司
  • 网站响应时间 标准网站建设色调的
  • 网站开发的合同网站建设 设计
  • 网站开发设置网页端口申请免费个人网站空间
  • 制作广告网站的步骤云服务器做网站
  • ipv6可以做网站吗东莞网站建站推广
  • 注册功能的网站怎么做做网站容易还是编程容易
  • wordpress建立目录seo编辑培训
  • 网站怎么群发广州现在可以正常出入吗
  • 微信有网站开发吗多语种网站
  • 深圳网站设计 建设首选深圳市室内设计公司排名前50
  • 上海网站建设 觉策动力wordpress接口开发
  • 网站建设服务器的选择方案小型视频网站建设
  • 江宁做网站价格扬州立扬计算机培训网站建设怎么样
  • 手表网站背景开发新客户的十大渠道
  • 定制网站设计wordpress写的网站
  • p2p网站建设公司排名成都装饰公司
  • 网站被k怎么恢复wordpress缓存类
  • 做外贸有哪些网站平台最近文章 wordpress
  • joomla网站模板一个人做网站的swot
  • 南京建设网站需要多少钱深圳专业网站建设制作价格
  • 天河建网站装修公司线上推广方式
  • 超市网站怎么做的目前最流行的拓客方法
  • 做文字logo的网站贵阳商城网站开发
  • 沧州有没有做网站的中国建筑设计
  • 建设网站 系统占用空间在线代理浏览网站
  • 做海报有什么参考的网站网站建设验收合同