www.cnblogs.com/ruiyqinrui

开源、架构、Linux C/C++/python AI BI 运维开发自动化运维。 春风桃李花 秋雨梧桐叶。“力尽不知热 但惜夏日长”。夏不惜,秋不获。@ruiY--秦瑞

python爬虫,C编程,嵌入式开发.hadoop大数据,桉树,onenebula云计算架构.linux运维及驱动开发.

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1,宏定义,有参宏,无参宏,宏定义实现的是定义一个符号常量;

条件编译3种方式,文件包含含义;

不带参数的宏定义;既用一个指定的的标识符来代替一个字符串;
#define RUIY 10000000
把标识符定义为字符串,在进行编译预处理时,编译系统就能把程序中出现的标识符用字符串去替代,然后再对预处理后的程序进行编译;
与typedef 给系统中已存在的数据类型重新定义别名类似,但是是有区别的;
typedef  char * String;
使用不带参数的宏定义

#include <stdio.h>
#define PI 3.1415926

int main(){
  float s,r,v,l;
  printf("Please input radius longs:");
  scanf("%f",&r);
  
}

2,宏名一般用大写,以便于变量加以区别;

使用宏名代替字符串可以提高程序的运行效率

宏名语句后不加分号;以便于通常的C语句区别开来;

宏名定义的有效范围为从定义处起到源程序文件的末尾;

可用#undef终止宏定义的作用范围 ;

在进行宏定义时可引用以定义的宏名;

对程序中用用双引号括起来的标识符在预处理时不作字符替换,

宏定义只作字符替换,预处理时不分配内存;

 

void main()
{
  printf("l=%10.4\nv=%10.4\ns=%10.4\n");
}

5,带参数的宏定义

带参数的宏定义不只是简单的字符替换,还要进行参数替换;
一般定义形式:
#define 宏名标识符(参数列表) 字符串

 6,条件编译

6,#if

#if condition
  code;
#elif require
  code;
#else
  code;
#endif

条件编译分别可以实现:

1,代码注释,2,宏名定义判断,3,宏变量值;

posted on 2013-11-08 21:07  秦瑞It行程实录  阅读(546)  评论(0编辑  收藏  举报
www.cnblogs.com/ruiyqinrui