宏定义学习


(1)宏名一般用大写
(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义
(3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
(4)宏定义末尾不加分号;
(5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
(6)可以用#undef命令终止宏定义的作用域
(7)宏定义不可以嵌套
(8)字符串" "中永远不包含宏
(9)宏定义不分配内存,变量定义分配内存。
(10)宏定义不存在类型问题,它的参数也是无类型的。


1.宏定义一定要加括号的原因是主要由于宏定义是完全替换的。如果不加括号可能会导致在下面主函数的运算的过程中替换后不是我们要表达的原意

例如下面的代码:

# include <stdio.h>

#define year 365+2   //如果我们不加括号(365+2)那么在下面的调用过程中就会发生源代码中的问题,会先计算365+2*2 而我们原意要表达的

int main(void)       //是(365+2)*2

{

int a;

a=year*2;

printf("%d",a);

return 0;

}


2.宏定义表示一年中有多少秒:

默认情况小 宏定义数据类型是整形的(即是int类型)所以在考虑宏定义的时间应该注意他的类型的范围

如果超出默认的整形类型的时候就需要强制类型转换,比如下面的例子:

我们来用宏定义一年的时间(s)

#define year ()UL

后面的UL 就是强制类型转换。


时间: 2024-10-10 07:16:13

宏定义学习的相关文章

宏定义学习(1)

#define 标识符 字符串 输入半径,求周长.面积.球体积,使用不带参数的宏定义 #include <stdio.h> #define PI 3.1415926 int main() { double l,s,r,v; printf("input radius:"); scanf("%lf",&r); l=2.0*PI*r; s=PI*r*r; v=4.0/3*PI*r*r*r; printf("l=%10.4f\ns=%10.4l

初级篇第十一期:学习使用常量定义和宏定义

学习建议:自己动手,丰衣足食 学习周期:1周 学习目的:熟练使用常量定义和宏定义 学习答疑:欢迎来技术群里提问并做分享 学习工具:Xcode开发环境 学习内容:熟悉项目开发中常用的两个定义 我们一般定义常量数字和字符串的时候一般会考虑用常量来定义   static CGFloat const kDefaultColorLayerOpacity = 0.4f; 一般定义宏的时候,都是用来定义方法,用宏的时候一定要多注意使用哦,会关系到括号的问题   #define SWH_RGBA(r, g, b

Linux学习笔记——举例说,makefile 添加宏定义

0.前言 从学习C语言開始就慢慢開始接触makefile,查阅了非常多的makefile的资料但总感觉没有真正掌握makefile.假设自己动手写一个makefile总认为非常吃力. 所以特意借助博客总结makefile的相关知识.通过样例说明makefile的详细使用方法. 例说makefile分为下面几个部分.很多其它内容请參考[例说makefile索引博文] 1.仅仅有单个C文件 2.含有多个C文件 3.须要包含头文件路径 4.添加宏定义 5.添加系统共享库 6.添加自己定义共享库 7.一

c语言中的宏定义的学习体会

在学习stm32的过程中遇到关于宏定义的问题,所以,写出来大家一起学习一下 问题出处: 其中\是语言中的转义字符,用来连接上下文,因为宏定义只能是一个串,而当你的串过长(超过一行的时候)时,就需要换行了,此时就需要\来连接上下文. 下面是成熟软件中常用到的宏定义: 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植. typedef 

Linux学习笔记——例说makefile 增加宏定义

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一个实际的例子 [代码仓库]--makefile-example

单片机学习之:C语言基础——宏定义(#define)

例如: #define uint unsigned int //用uint来代替(表示)unsigned int,语句前有#,后面无须加分号“;” uint可为除关键字以外的任意字符,以方便书写.同理:#define uchar unsigned char 单片机学习之:C语言基础--宏定义(#define)

C语言学习——宏定义

1.简单的宏定义 #define <宏名> <字符串> 例:#define LEN 0.5 2.带参数的宏定义 #define <宏名> (<参数表>) <宏体>例:#define Fun(para) para*2 3.实例分析 1 #define VALUE 2+2 2 void main() 3 { 4 int n=VALUE*VALUE; 5 printf("%d",n); 6 } 这段代码的输出是多少呢?16?也许会让

使用xcode的preprocess功能学习宏定义

C.C++和Objective-C都支持宏定义.宏在编译预处理过程中会进行代码替换.我们可以通过命令行非常容易就能的到一个源文件处理后的结果. #define kMax 100int main(int argc, char * argv[]) {     int a = 100;     if (a < kMax) {         a++;     }     else {         a = 0;     }     return 0;} 编译预处理命令: clang -E main.

【学习笔记】【C语言】宏定义

1.宏定义可以分为2种:不带参数的宏定义 带参数的宏定义 2.定义 一般形式#define 宏名 字符串比如  #define ABC 10右边的字符串也可以省略,比如#define ABC 3.作用 它的作用是在编译预处理时,将源程序中所有"宏名"替换成右边的"字符串",常用来定义常量.接下来写个程序根据圆的半径计算周长 4.例子 在第4行定义了一个叫PI的宏,在编译预处理之后,第8行中的2 * PI *radius就会变成2 * 3.14 * radius. 1