C语言预处理器(十五)

原创 2016年05月31日 10:08:12


#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));

    

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C语言再学习 -- C 预处理器

一、#define

C语言的预处理器

预处理器是在编译C程序之前对程序进行编辑的工具,它的行为依赖于以#开头的预处理指令。...

C语言预处理器

文件中的#ifndef头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大...

C语言预处理器详解

1.预定义符号  下面这些是C语言的预处理器定义的符号,他们都是常量十进制数,或者是常量字符串。他们用来指示调试输出来源以及为编译程序加如时间信息。而STDC用来进行条件编译。其详细意义如下: FIL...
  • wy_ei
  • wy_ei
  • 2015年03月15日 18:58
  • 294

【C语言】预处理器

C预处理器: 指令 描述 #define 定义宏(MACRO) #include 包含一个源代码文件 #undef 取消已定义的宏 #ifdef 如果宏已经定义,...

【C】C语言预处理器的几个命令

C语言预处理器是个简单的的宏处理器,预处理器用特殊的命令行控制,这些命令行以#开头,不包含预处理器命令的行称为源程序文本行。预处理器通常从源文件中删除所有预处理器命令行,并按预处理器命令指示对源文件进...
  • iEearth
  • iEearth
  • 2015年04月08日 09:47
  • 1134

c语言预处理器指令

c语言有强大的预处理器指令,在很多情况下都是很有用的。 首先介绍什么是预处理器,预处理器就是在程序的源代码编译之前,会对程序进行翻译工作,就是把这程序\之后的回车去掉,以及去掉注释,然后会把...

C语言-预处理器

如果想在下一行延续指令,则在当前行末尾使用\字符   带参数的宏 #define MAX(x,y) ((x)>(y)?(x):(y)) #define IS_EVEN(n) ...

C语言之路 第七章 C语言预处理器

第七章 C语言预处理器 每一发奋努力的背后,必有加倍的赏赐。  C语言预处理器就像它的名字一样,是源程序编译之前的一段预处理程序。预处理器命令可以被认为是C语言内部的语言。如果不懂预处理器...

C语言实现链表之单向链表(十五)测试用例

C语言实现链表之单向链表(十五)测试用例     上一篇文章给出了最后的两个函数,即链表打印和排序,这篇文章将给出所有函数的测试用例,即ListTestTop.c文件。 /* ********...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言预处理器(十五)
举报原因:
原因补充:

(最多只允许输入30个字)