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
  • qq_29350001
  • qq_29350001
  • 2016年11月14日 14:48
  • 1746

c语言预处理和宏定义详

关于宏和预处理器的有趣的事实 在一个c程序中,程序中所有的#都是由预处理器处理的,这是由编译器调用的特殊程序,在一个程序术语中,预处理器需要一个c程序,同时会产生一个没有#的c程序。 以下是有关C...
  • lyztyycode
  • lyztyycode
  • 2017年05月17日 20:09
  • 168

C语言的##运算符-预处理器的粘合剂

C语言的##运算符-预处理器的粘合剂 与#运算符类似,##运算符可以用于类函数宏的替换部分。而且,还可以用于宏对象的替换部分。##运算符可以把两个记号组合成一个。实现字符串化。 示例分析// g...
  • libing403
  • libing403
  • 2017年06月10日 12:29
  • 253

C语言预处理器

调试环境:vs2015+win10 C预处理器就是将源文件经过一些简单的处理,最常用的是删除注释、处理#include指令和处理#define指令。 文件包含 #include指令:用于在编译期...
  • baidu_27435045
  • baidu_27435045
  • 2016年12月02日 12:33
  • 255

c语言预处理器

本文参考自《C语言程序设计--现代方法》 预处理器是什么? 预处理器是一个小软件,它可以在编译前处理c程序,和其他语言不同,c和c++语言十分依赖预处理器,现在一般和编译器集成在一起。 预处理器的优缺...
  • qq_26010491
  • qq_26010491
  • 2016年10月27日 10:55
  • 253

【C语言】预处理器

编译程序的第一个阶段就是预处理阶段
  • u011708432
  • u011708432
  • 2014年05月05日 21:33
  • 341

C语言-预处理器

如果想在下一行延续指令,则在当前行末尾使用\字符   带参数的宏 #define MAX(x,y) ((x)>(y)?(x):(y)) #define IS_EVEN(n) ...
  • louis813
  • louis813
  • 2012年03月04日 20:12
  • 136

c++预处理器概述 #define #ifdef #ifndef #endif

预处理器: 确保头文件多次包含仍能安全工作,即可以有效地防止头文件重复包含的发生....
  • a1414345
  • a1414345
  • 2016年10月22日 19:55
  • 706

预处理:条件编译

假如现在要开发一个C语言程序,让它输出红色的文字,并且要求跨平台,在 Windows 和 Linux 下都能运行,怎么办呢? 这个程序的难点在于,不同平台下控制文字颜色的代码不一样,我们必须要能够识...
  • duhengqi
  • duhengqi
  • 2017年05月04日 00:49
  • 235

超文本预处理器——PHP(基础)

PHP,百度百科解释为一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法...
  • lz233333
  • lz233333
  • 2016年11月03日 20:42
  • 306
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言预处理器(十五)
举报原因:
原因补充:

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