如果需要公布某个宏,那么该宏定义应当放置在头文件中,否则放置在实现文件(.cpp)的顶部。 不要使用宏来定义新类型名,应该使用typedef,否则容易造成错误。 给宏添加注释时请使用块注释(/* */),而不要使用行注释。因为有些编译器可能会把宏后面的行注释理解为宏体的一部分。 尽量使用const取代宏来定义符号常量。
被命名的标识符具有类型定义说明。 6、与之相关的宏定义 编写程序过程中,很多都需要条件编译,来看一个常用的使用方法。 #ifdefined(CREDIT)credit();#elifdefined(DEBIT)debit();#elseprinterror();#endif 7、总结 宏的本质是代码替换。 审核编辑:汤梓红...
首先,在C语言中,宏定义使用“#define”关键字进行定义,其语法格式为: ``` #define宏名称值 ``` 其中,宏名称是自定义的标识符,可以是任意有效的变量名或符号;值可以是任意的表达式、常量或代码片段。通过宏定义,我们可以将一些重复使用的代码片段定义为宏,以提高代码的重用性和可读性。 在使用宏定义时,需要注意...
boolean逻辑类型true和false c语言中没有布尔类型,可以使用宏和typedef创建一个 布尔型 #include<stdio.h>#defineTrue 1//将True全部 查找替换 成 1#defineFalse 0//将False全部 查找替换 成 0typedefintBOOLEAN;//定义一个新类型名intmain(){ BOOLEAN SUCCESS=True;//比 int SUCCESS = 1 更具有可读性return...
宏定义可以嵌套使用,也就是说替换内容中可以包含其他已经定义过的宏。例如: #defineAVG(a, b) (SUM(a, b) /2.0)// 定义一个求两个数平均值的函数,使用了SUM宏#definePOW(a, b) (MUL(SQUARE(a), SQUARE(b)))// 定义一个求两个数乘方的函数,使用了MUL和SQUARE宏 ...
在进行预处理时,将程序中凡是在该指令以后出现的所有的E都用2.718281828459代替。这种方法使用户能以一个简单的名字代替一个长的字符串,因此把这个标识符(名字)称为"宏名” 在预处理时将宏名替换成字符串的过程称为"宏展开“。#define就是宏定义指令。 二,带参数的宏定义 带参数的宏定义不是仅仅进行简单的字符...
解决方法是在整个 宏体上再加一个括号,即#definearea(x) ((x)*(x)),不要觉得这没必要,没有它,是不行的。 要想能够真正使用好宏定义,那么在读别人的程序时,一定要记住先将程序中对宏的使用全部替换成它所代表的字符串,不要自作主张地添加任何其他符号,完全展开后再进行相应的计算,就不会写错运行结果。
宏定义中:参数名,即为形参,如#define sum(a,b) (a+b);中a和b均为某一参数的代表符号,即形式参数。 而##的作用则是将宏定义的多个形参成一个实际参数名。 如: #define exampleNum(n) num##n int num9=9; 使用: int num=exampleNum(9); 将会扩展成 int num=num9; ...
5) 、对类型重命名。在5.2节中,我们通过重命名int创建了一个Boolean类型: #define BOOL int 虽然有些程序员会使用宏定义的方式来实现此目的,但类型定义(7.6节)仍然是定义新类型的最佳方法。 6) 、控制条件编译。如将在14.4节中看到的那样,宏在控制条件编译中起重要的作用。例如,在程序中出现的宏定义可能表明需...