关闭

C语言预处理器(十五)

199人阅读 评论(0) 收藏 举报
分类:


#include <stdio.h>
#include "MyFile.h"


/** #define **/
//1、反斜线将定义延续到下一行  "\"
#define A "My First define is n\
ot so ha\
rd,And wh\
o they'er\n" //My First define is not so hard,And who they'er

//2、const 定义全局常量
const int b = 20;

//3、static 引用 define 作为数组长度
#define Num 50
static int d[Num];
const int f = 2*Num;
//错误
static int c[b];  //教程说是无效
const int e = 2*b; //教程说是无效

//4、宏重定义 macro redefined
#define Num2 2 * 3
#define Num2 2  *  4
#define Num2 2*3        //以最后一次定义为准

//5、带参数的 define
#define Num3(X)   2*X

//6、##运算符 把变量名粘合
#define Num4(n) x##n

//7、有返回值的宏
#define MAX(x,y) (x>y?x:y)
#define MIN(x,y) (x<y?x:y)



/** #undef **/
#define DE 10
#undef DE    //取消宏定义




/** 条件编译 #ifdef  #ifndef **/
//1、#ifdef  如果定义了
//#define MAVIX
#ifdef MAVIX
#define HOST "https://www.csdn.com"
#else
#define HOST "https://www.baidu.com"
#endif
//2、#ifndef  如果没有定义
#ifndef MAVIX
#define HOST2 "https://www.csdn.com"
#else
#define HOST2 "https://www.baidu.com"
#endif



/** #if #endif **/
#define IS_HOST 2
#if IS_HOST==1    //如果条件符合
#define HOST3 "https://www.csdn.com"
#elif IS_HOST==2
#define HOST3 "FUCK"
#else
#define HOST3 "https://www.baidu.com"
#endif



/** 配合 #if else 使用 #ifdef **/
//好处是可以配合 if elif  else 使用
//#define TEST
#define TEST2
#if defined (TEST)
#define PRIF "TEST\n"
#elif defined (TEST2)
#define PRIF "TEST2\n"
#else
#define PRIF "FUCK\n"
#endif



/** 系统宏 **/
//时间                __TIME__
//日期                __DATE__
//当前源代码文件名      __FILE__
//当前源代码行号整型常量 __LINE__
//当前方法名           __func__




/** #line **/
#line 1000 //把当前行号重置为1000
#line 10 "mainn.c" //把行号重置为10,文件名重置为 mainn.c



/** #pramar **/
#pragma mark - massage






void codePring();
void codePring2();
void codePring3();
void codePring4();
void codePring5();
void codePring6();

int main(int argc, const char * argv[])
{

    //#define
    codePring();
    //#undef
    codePring2();
    //条件编译
    codePring3();
    codePring4();
    codePring5();
    //系统宏
    codePring6();

    test2();
    a = 1.0;
    testNum = 10;
    doit();
    doit2();
    return 0;
}


void codePring6()
{
    
    printf("TIME==%s TIMESTAMP==%s\n",__TIME__,__TIMESTAMP__); //12:18:50
    printf("DATE==%s\n",__DATE__); //May 31 2016
    printf("LINE==%d\n",__LINE__); //143 行
    printf("FILE==%s\n",__FILE__); ///Users/Apple/Desktop/精华/C/C语言预处理器(十五)/C语言预处理器(十五)/main.c
    printf("func==%s\n",__func__); //codePring6  当前方法名 (预定义标识符,非预定义宏)
    printf("FUNCTION==%s\n",__FUNCTION__); //codePring6 当前方法名
    printf("amd64==%d\n",__amd64__); //1  当前系统是否支持64位 __amd64
    printf("APPLE==%d\n",__APPLE__); //1  当前系统为苹果
    printf("VERSION==%ld\n",__STDC_VERSION__); //199901  C99
    printf("HOSTED==%d\n",__STDC_HOSTED__); //1  本机环境为1,否则为0


}

void codePring5()
{
    printf(PRIF);
}


void codePring4()
{
    printf("ISHOST? HOST3==%s\n %s",HOST3,__TIME__);
    

}

void codePring3()
{
    printf("MAVIX? HOST==%s\n",HOST);
    printf("MAVIX? HOST2==%s\n",HOST2);


}



void codePring2()
{
    
//    printf("DE==%d\n",DE);

    
}

void codePring()
{
    
    printf("%s\n",A);
    
    puts("c==\n");
    putchar(c[0]);
    puts("c end\n");
    
    printf("f==%d e==%d\n",f,e);
    
    printf("Num2==%d\n",Num2);

    printf("Num3==%d\n",Num3(10));

    int Num4(1) = 10; // 相当于 x1 = 10
    
    printf("MAX==%f\n",MAX(30, 30.11));
    printf("MIN==%f\n",MIN(30, 30.11));

    

}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:193561次
    • 积分:3537
    • 等级:
    • 排名:第9712名
    • 原创:141篇
    • 转载:194篇
    • 译文:3篇
    • 评论:7条
    最新评论