c语言笔记之宏定义

警告
本文最后更新于 2022-03-01,文中内容可能已过时,请谨慎使用。

带参数的宏的原则:

  • 一切都要括号
  • 整个值要括号
  • 参数出现的每个地方都要括号

注意:结尾千万不要加上分号

#include<stdio.h>
#include<stdlib.h>

#define MAX( x, y ) ( ((x) > (y)) ? (x) : (y) )
#define MIN( x, y ) ( ((x) < (y)) ? (x) : (y) )
#define UPCASE( c ) ( ((c) >= 'a' && (c) <= 'z') ? ((c) - 0x20) : (c) )//大小写转换
#define Cube(x) ((x) * (x) * (x) )
#define func(x) ((x) / 3)

#define PI 3.14
//#undef PI 撤销宏定义
int main()
{
    printf("%.2f\n",PI);
    printf("%d\n",MAX(15,20));
    printf("%.1f\n",MAX(15.5,20.5));
    printf("%c\n",UPCASE('a'));
    printf("%c\n",UPCASE('b'));
    printf("%c\n",UPCASE('c'));
    printf("%c\n",UPCASE('D'));
    printf("%c\n",UPCASE('E'));
    printf("%d\n",Cube(5));
    printf("%d\n",func(5 + 4));
    return 0;
}
/images/img/20200109174607.png

例如在max.h中定义

//防止重复引入头文件
#ifndef _MAX_H_
#define _MAX_H_

extern int gAll;//使用这个全局变量必须先声明它
double max(double a,double b);

#endif
//注释
#if 0
    语句
#endif
#include <iostream>
using namespace std;
 
#define MKSTR( x ) #x
 
int main ()
{
    cout << MKSTR(hello c++) << endl;
 
    return 0;
}

输出:

hello c++
#include <iostream>

using namespace std;
 
#define CONCAT( x, y )  x ## y 
 
int main ()
{
    int ab = 15;
    cout << CONCAT(a,b) << endl;
    cout << CONCAT(1,2); 
    return 0;
}

输出:

15
12

相关文章