C语言编程学习—宏定义的一些使用技巧

C语言是面向过程的,而C++是面向对象的

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

今天分享下C语言的宏定义。C语言宏定义看起来简单,只需要 #define 语句即可使用。宏定义的主要作用其实就是文本替换,发生在C语言的预处理过程。宏定义其实还有下面的一些作用。

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

宏代替常数,消除魔法数字,也有利于后续的阅读和修改。奇异的常数会造成程序员阅读的困难。程序是写个人看的,一定要记住这一点,不然其他程序员看见你写的代码会抓狂。而且用宏代替常数,也利于代码修改,只需修改宏即可。

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

宏用来消除重复定义。主要用在头文件定义中,防止发生循环包含和重复包含。用法如下:

#ifndef TEST_H

#define TEST_H

//头文件内容

#endif

这样如果已经有 TEST_H 定义了,则不会再重复引用头文件了。

重新定义C语言的类型和函数,如int,memcpy等函数。主要用于多平台移植,提高兼容性。或者重新定义标准库函数,提高安全性和性能。

预定义宏进行调试。向类似__LINE__等,可用于调试,或者记录日志,对定位问题很有帮助。

宏用来条件编译,通过定义不同的宏,来进行不同的编译选项,如debug模式等。

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

还有一个小技巧,在宏中,##号可用来连接两个字符串,#号可将宏变成字符串。比如

#define name(my) #my

printf(“%s”,name(test));

则输出test;

#define name(my) my##_name

printf(“%s”,name(test));

则输出test_name;

一般记住,宏在预处理过程中要做文本替换,基本就不会出啥问题了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C中的预编译宏定义 2009-02-10 作者: infobillows 来源:网络 在将一个C源程序转换为可执行...
    白水灬煮一切阅读 1,669评论 0 5
  • 姓名:吕彬 学号:1613014035 【嵌牛导读】#define 宏定义是个演技非常高超的替身演员,但也会经常耍...
    傻彬儿阅读 1,318评论 0 1
  • http://www.open-open.com/lib/view/open1390651437117.html ...
    Xtuphe阅读 1,306评论 0 10
  • 目录 一.预处理的工作方式... 3 1.1.预处理的功能... 3 1.2预处理的工作方式... 3 二.预处理...
    朱森阅读 1,446评论 0 2
  • 昨夜忘了的梦是今天的演绎,还是不会发生的空白。 醒来,会发现只有闹钟响,而脑里却留有的是一遍漆黑。昨日看了你的名字...
    马东桂阅读 261评论 0 0