• 125417

    文章

  • 803

    评论

  • 12

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

inline,宏定义,static,extern

服了这份高薪指南,涨多少你说了算>>
  1. inline一般用于定义代码简洁,耗时短,不像宏定义是在预编译阶段替换,inline是在汇编阶段替换,效果一样。

    一般编译器进行优化的时候会对简短方法进行这种优化,不进行声明也会进行inline,如果显示的声明为inline,会增大最后代码的大小。最终是否优化由编译器决定,这样声明了可以在头文件中定义,不用担心重复定义。

  2. static是告诉链接器,当前文件定义的方法和变量只有当前模块可用,不能被其他的模块使用。

    注意,对于include方式进行包含的没有影响。include实际是对整个文件进行包含。这个一般是对于库与库,或者.o.o之间,可见范围由编译器进行分隔。

  3. extern是告诉编译器,如果当前项目没有定义相关的变量, 不需要报错,在链接阶段一定会有相关的定义的。

    和static 有些类似,也是使用于模块与模块之间的。

  4. 宏定义是在预编译阶段就进行替换。 可以通过g++ -E source.cpp的方式查看替换后的代码。
    	/*
    	[root@localhost definecompile]# g++ -E test.cpp
    	# 1 "test.cpp"
    	# 1 "<built-in>"
    	# 1 "<命令行>"
    	# 1 "/usr/include/stdc-predef.h" 1 3 4
    	# 1 "<命令行>" 2
    	# 1 "test.cpp"
    	*/
    	int main()
    	{
    		int ss = 0;
    		ss+=1;
    		return 0;
    	}
    	//[root@localhost definecompile]# cat test.cpp
    	#define SS(a) a+=1
    	int main()
    	{
    		int ss = 0;
    		SS(ss);
    		return 0;
    	}
    

    好处:当重复写一个变量或者是名字的时候,可以通过宏定义进行定义,手写容易出错,宏定义有编译器进行检测错误,定义方法的时候运行快,减少调用方法时的耗时。坏处:代码量增加,运行时占用的内存增大。 额外文档


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

0条评论

Loading...


自定义皮肤 主体内容背景
打开支付宝扫码付款购买视频教程
遇到问题联系客服QQ:419400980
注册梁钟霖个人博客