• define把参数变成字符串

     #define f(x)  printf("%s",#x);

  • define连接两个字符串

     #define a(x) a##x

  • define把参数变成字符

     #define  N(x)   #@x

  • 取消#define的作用域

     #undef  MN  //取消define的作用域

  • define内联函数

     #define run() {puts("锄禾日当午1") ;\
    puts("锄禾日当午2");\
    puts("锄禾日当午3");}

  • define定义assert
  •  assert用法

    1 assert(a = 0);
  • 宏定义assert
    1 #define ASSERT(x)  \
    2 if((x))\
    3 { \
    4 printf("ASSERT %s 代码出错\n",#x) ; \
    5 printf("文件%s %d行\n",__FILE__,__LINE__) ; \
    6 printf("函数%s \n",__FUNCTION__) ; \
    7 abort(), getchar();\
    8 return ; \
    9 }

  • #ifdef,#error用法

     #ifdef  N
    #error 错误,不能定义N
    #endif

  • #if用法

     #if num==1
    #error 小伙子你的除数不要写为0,写了哥会溢出的
    #endif
  • 内置宏定义__LINE__,__FILE__,__DATE__,__TIME__,__FUNCTION__
     #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #line 1
    void main() //计数,从这一行开始
    {
    //改变行数,某一段到某一段一共多少行
    printf("%d\n", __LINE__);
    char path[];
    //获取当前文件地址
    sprintf(path, "%s", __FILE__);
    printf("%s", path);
    getchar();
    }
    1 printf("代码编译时间 %s %s\n", __DATE__,  __TIME__);
     printf("函数名%s\n", __FUNCTION__);
  • 条件编译 #if   #else   #endif

     #include<stdio.h>
    #define findWC 10
    void main()
    {
    #if findWC==1
    printf("拉");
    #else
    printf("憋");
    #endif
    getchar(); }

    #if   #elif   #endif

     // 'b'北京  's'四川, h 菏泽  a美帝
    #define manspeak 'b' void main3()
    { #if manspeak=='b'
    puts(" love you 1314");
    #elif manspeak=='h'
    puts("俺很稀罕你");
    #elif manspeak=='a'
    puts("i love you for ever");
    #elif manspeak=='s'
    puts("老子喜欢你,不喜欢我,你仙人板板的");
    #endif }

    #ifdef #ifndef

    #ifdef Debug
    printf("love you");
    #endif #ifndef test
    printf("没有定义test");
    #endif

90.#define高级用法的更多相关文章

  1. #define命令的一些高级用法

    =========================================================== define中的三个特殊符号:#,##,#@ ================= ...

  2. Visual Studio 宏的高级用法

    因为自 Visual Studio 2012 开始,微软已经取消了对宏的支持,所以本篇文章所述内容只适用于 Visual Studio 2010 或更早期版本的 VS. 在上一篇中,我已经介绍了如何编 ...

  3. break 的一个“高级用法”(转)

    转载:http://blog.csdn.net/lovelan1748/article/details/5321558 本小节不是很适于没有多少实际编程经历的初学者,所以初学者可以跳过,以后再回头阅读 ...

  4. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  5. Python3基础-高级用法

    写在前面:本文主要是python高级练习部分,介绍了一些高级用法,这些都是零散的小知识,这些可以与函数式编程合在一起使用. 函数式编程1:Python中提供的函数式编程主要有: map(函数,可迭代式 ...

  6. Python之Requests的高级用法

    # 高级用法 本篇文档涵盖了Requests的一些更加高级的特性. ## 会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个Session实例发出的所有请求之间保持cookies. 会话对象 ...

  7. sed高级用法:模式空间(pattern space)和保持空间(hold space)

    摘自:https://blog.csdn.net/ITsenlin/article/details/21129405 sed高级用法:模式空间(pattern space)和保持空间(hold spa ...

  8. Go template高级用法、深入详解、手册、指南、剖析

    入门示例 以下为test.html文件的内容,里面使用了一个template语法{{.}}. <!DOCTYPE html> <html> <head> <m ...

  9. ConxtMenu高级用法

    ##背景我们经常在列表的页面中,点击列表中的行,一般进入详情页面,长按列表中一行,会弹出一个菜单,包含了对某一行的操作(编辑.删除等等),也知道通常的用法: 0x01. 在Activity中注册需要上 ...

随机推荐

  1. java带package的编译

    ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "java -cp d:\\TEST com/ ...

  2. java.util.logging.FileHandler

    java.util.logging.FileHandler java自带的日志功能,FileHandler可以写日志到文件系统,并且自己维护日志的增删,比c++不知道强多少 FileHandler(f ...

  3. 实现图片懒加载(lazyload)

    对页面加载速度影响最大的就是图片,一张普通的图片可以达到几M的大小,而代码也许就只有几十KB.当页面图片很多时,页面的加载速度缓慢,几S钟内页面没有加载完成,也许会失去很多的用户. 所以,对于图片过多 ...

  4. HP 1022N 网络打印机安装步骤

    HP 1022N 网络打印机安装步骤

  5. python音频处理相关类库

    一.eyeD3 以下是eyed3的官方介绍 eyeD3 is a Python tool for working with audio files, specifically mp3 files co ...

  6. 【Henu ACM Round #13 E】Spy Syndrome 2

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 对m个串建立一棵字典树. 然后对主串. 尝试从第一个位置开始.在字典树中尝试匹配 如果匹配到了位置i 就再从位置i+1开始尝试匹配 ...

  7. ArcGIS engine中Display类库 (局部刷新)

    转自原文 ArcGIS engine中Display类库 (局部刷新) Display类库包括了用于显示GIS数据的对象.除了负责实际输出图像的主要显示对象(display object)外,这个类库 ...

  8. [Javascript] this in Function Calls

    In most cases, the value of a function's this argument is determined by how the function is called. ...

  9. UNIX多线程编程

    一个程序至少有一个进程.一个进程至少有一个线程.进程拥有自己独立的存储空间,而线程能够看作是轻量级的进程,共享进程内的全部资源.能够把进程看作一个工厂.线程看作工厂内的各个车间,每一个车间共享整个工厂 ...

  10. LintCode 二叉树的遍历 (非递归)

    前序: class Solution { public: /** * @param root: The root of binary tree. * @return: Preorder in vect ...