码迷,mamicode.com
首页 > 编程语言 > 详细

C语言预处理学习记录

时间:2020-02-27 19:16:00      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:efi   lin   wrong   rgs   预编译   结果   pre   line   bug   

#include<stdio.h>

#define LOCAL //无参宏

//条件编译 
#ifdef LOCAL
int a=1;
#else
int a=2;
#endif

#ifndef LOCAL
int b=1;
#else 
int b=2;
#endif

#define PI 3.1415926535 //有参宏

#define max_wrong(a,b) a>b?a:b
#define max(a,b) ((a)>(b)?(a):(b))
#define maxwell(a,b) ({    __typeof(a) _a=(a),_b=(b);    _a>_b?_a:_b;}) 

#define DEBUG//

#ifdef DEBUG
#define log(frm,args...) {    printf("[%s %s %d] : %s = ",__FILE__,__func__,__LINE__,#args);    printf(frm,##args);}
#else
#define log(frm,args...)
#endif

int main(){
    printf("a = %d b = %d\n",a,b);
    printf("max_wrong(2,max_wrong(3,4)) = %d\n",max_wrong(2,max_wrong(3,4)));
    //展开后: 2>3>4?3:4?2:3>4?3:4 实际执行 ((2>3>4)?(3):(4))? (2) : (3>4?3:4)
    //使用 -E 编译选项获得预编译结果 
    printf("max(2,max(3,4)) = %d\n",max(2,max(3,4)));
    
    int a=1;
    printf("%d\n",max(a++,0));
    log("%d\n",a);
    a=1;
    log("%d\n",maxwell(a++,0));
    log("%d\n",a);
    
    log("Hello world");
    return 0;
}

C语言预处理学习记录

标签:efi   lin   wrong   rgs   预编译   结果   pre   line   bug   

原文地址:https://www.cnblogs.com/chwhc/p/12373580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!