三九宝宝网宝宝教育教学论文

C语言 define语句的用法

02月17日 编辑 39baobao.com

[求c语言实现图形界面c c c语言都可以]那得学习windows编程了。。。用VC6.0新建一个wn32程序,而不DOS程序,输入如下代码即可:#include#include#include#includeint g_nYPos = 200; //文字的Y坐标 long WINAPI WndProc...+阅读

1.简单的宏定义 格式:#define 标识符 替换列表 说明:替换列表可以是数,字符串字面量,标点符号,运算符,标识符,关键字,字符常量。 注意:替换列表是可以为空的 典型错误: 1 2 3 4 5 6 7 8 9 10 #define N = 100 inta[N]; /*这样会成为int a[= 100],这里会处理成为一种标识记号一样*/ #define N 100; inta[N]; /*带分号的定义会成为int a[100;],这是一种很常见的错误*/ #define pin (int*); pin a,b; int* a,b; /*本意是a和b都是int型指针,但是实际上变成int* a,b;a是int型指针,而b是int型变量。这是应该使用typedef来代替define,这样a和b就都是int型指针了。*/ 典型的使用方法: 使用宏定义可以自己根据自己的习惯来定义甚至改变C语言的语法习惯,例如: 1 2 3 4 5 #define BEGIN { #define END } intmain()BEGIN printf("DEFINE----\n"); END 定义一个循环 1 #define LOOP for(;;) 重新定义数据类型 1 #define IT int 2.带参数的宏 #define 标识符(x1,x2,x3...xn) 替换列表 (注意:x1,x2,x3..是宏的参数,标识符和其左括弧之间不能有空格) 使用方法: 1 2 #define MAX(x,y) ((x)>(y)?(x):(y)) i=MAX(j+k,m-n); 替换为: 1 2 3 i=MAX((j+k)>(m-n)?(j+k):(m-n)); #define SI_EX(n) ((n)%2==0) if(SI_EX(i)) i++; 替换为: 1 if(SI_EX((i)%2==0)) 通过以上例子可以看出,标识符带参数(X1,X2,X3.....)在替换时会被替换列表(Y1,Y2,Y3....)对应的替换,但是和顺序无关。 3.宏的特殊单行定义 1 2 3 4 #define A(x) T_##x #define B(x) #x #define C(x) #x x=1 替换为: A

(1)------>T_1 (T_##x,##符号是记号粘黏符号,将前后的字符粘黏起来。) B

(1)------>'1' ( #x , # 符号会将宏的参数进行字符串字面量化,并且加‘’号) C

(1)------>"1" ( #x ,#符号会将宏的参数进行字符串字面量化,并且加""号) 4.define的多行定义 define可以替代多行的代码,在每一个换行的时候加上一个"\" 1 2 3 4 5 #define MAX(X,Y) do{ \ 语句1; \ 语句2; \ /* 注释的写法 */\ } while(0) /* (no trailing ; ) */\ 5.在大规模的开发过程中,特别是跨平台和系统的软件里,define最重要的功能是条件编译。 1 2 3 4 5 6 7 8 #ifdef WINDOWS ...... ...... #endif #ifdef LINUX ...... ...... #endif 可以在编译的时候通过#define设置编译环境 6.取消宏 1 #undef 标识符 7.条件编译 1 #ifdef XXX…(#else) … #endif 8.预定义宏 在C语言中收录了一些有用的宏,这些宏是提供当前编译信息的。 __LINE__ 被编译文件的行数 (整型) __FILE__ 被编译文件的名字 (字符型) __DATE__ 编译日期 (字符型) __TIME__ 编译时间 (字符型) __STDC__ 如果编译器接受标准C,那么值为1. (整型) 通常在编译的时候可以用这些预定义的宏来进行排错,例如: 一般情况下,当出现除零的情况时编译器是没有提示的,可以自定义一个解决办法。 1 2 3 #define CHECKZERO(divisor)\ if(divisor==0)\ printf("***ATTEMPT TO DIVIDE BY ZERO IN LINE %d of file %s ***\n",__LINE__,__FILE__);\ 引用方法 1 2 CHECKZERO(j); k=i/j;

以下为关联文档:

c跟c语言的区别正式解答: 从语法上讲: 不严格的说C是C++的子集,也就是C++包含C语言的大部分语法.当然由于C++和C都有不同的版本(ANSI/ISO),各编译器对标准支持的程度也不一样.C++不一定能百分百...

C语言数据结构与算法分析C语言描述Position不是一个类型,起码C语言中,我写那么多年代码没见过这个类型 。你该把整段代码贴上来。我猜你看的那段代码是伪代码,Position是自定义类型。若Position是类名,那么Positi...

C语言与C语言库函数是什么关系语言就是一种编程语句,它有自己的语法规则,不同的编程语句就是语法规则不同罢了。 所谓C编程就是在编写符合C语法规则的函数,大多数情况下函数都是由程序员自己编写的,但是C本身...

C语言面向对象语言1.设计对象:就是要搞清楚对角包含的数据(属性),如学生对象可能包含学号、姓名、性别、成绩等信息。还要搞清楚对该对象的数据进行的操作有哪些,如:设置类操作Set...(设置姓名、设置...

C学习笔记一 C语言和汇编语言的区别C学习笔记(一) C语言和汇编语言的区别 2016-07-11 09:43 162人阅读 评论(0) 收藏 举报 分类: C学习笔记(13) 版权声明:本文为博主原创文章,未经博主允许不得转载。 C学习笔记(五) C语言...

C语言基础题 c语言高手请进main() { double a=?; double b=?; double c=? double x; doublet delta; delta = b*b-4*a*c if(delta < 0) { printf("无解!\n"); } else if(fabs(delta-1e-20)<0.0) { x=(-b+sq...

C语言入门题来个C语言前辈帮帮#include ain() { float a,b,c,x,s; /*S用来存△的值*/ printf("请输入a ,b , c的值\n"); scanf("&f&f&f\n",&a,&b,&c); /* #include #include ain() { float a,b,c,x,s; /*S用来...

c语言题c语言题while(scanf("%c",&c)!=EOF) { fflush(stdin); scanf("%d%d",&a,&b); if(c=='L') { t=max(a,b); printf("%d\n",t); } else if(c=='S') { t=min(a,b); printf("%d\n",t); } else pri...

c语言 basic语言 c语言都能完成什么功能首先Basic语言是解释型的语言,而C语言是编译型的语言。什么意思呢,就是你编写的Basic语言程序运行的时候需要一个解释器将高级语言代码转为机器码然后才可以执行。C语言程序一...

推荐阅读
图文推荐