C语言程序设计--宏和预处理

C语言宏



宏定义常量


#include <stdio.h>

#define SIZE 100
#define BANNER "WARNING:"

int main(void){
    printf("%d\n", SIZE);
    printf("%s\n",BANNER);
    return 0;
}

宏定义数据类型


#include <stdio.h>

#define string char*

int main(void){
    string banner = "HELLO, WORLD!";
    printf("%s\n",banner);
    return 0;
}

宏定义函数


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

#define random (rand()%100)

int main(void){
    while(1){
        int num = random;
        printf("%d\n", num);
        if (num >= 50){
            break;
        }
    }
    return 0;
}

宏定义带参数函数


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

#define max(a,b) a>b?a:b

int main(void){
    int max_num;
    max_num = max(10,100);
    printf("%d\n",max_num);
    max_num = max(10,6);
    printf("%d\n",max_num);
    return 0;
}

宏解除定义


#undef xxx

预处理



三个已知

#include <stdio.h>//包含文件
#define SIZE 100 //定义宏
#undef SIZE  //解除宏定义

条件宏定义


#define MAX 100
#ifdef MAX //如果定义了MAX宏
    #undef MAX
#else //否则
    #define MAX 10
#endif
#ifndef MIN//如果没有定义MIN
    #define MIN 2//定义宏MIN为2
#endif

另外的条件判断


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

#define MAX_THREAD 10
#if MAX_THREAD > 5
    #undef MAX_THREAD
    #define MAX_THREAD 5
#endif


int main(void){
    printf("%d\n",MAX_THREAD);
    return 0;
}
/*同理#else和#elif的用法与else 和else if类似*/

最后两个


/*
#error  当遇到标准错误时,输出错误消息
#pragma 使用标准化方法,向编译器发布特殊的命令到编译器中
*/

猜你喜欢

转载自www.cnblogs.com/KevinGeorge/p/10236810.html