1. 程式人生 > >90.#define高級用法

90.#define高級用法

__line__ 用法 print getchar() spa 字符串 log warn 當前


  • define把參數變成字符串
    1 #define f(x)  printf("%s",#x);


  • define連接兩個字符串
    1 #define a(x) a##x


  • define把參數變成字符
    1 #define  N(x)   #@x


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


  • define內聯函數
    1 #define run() {puts("鋤禾日當午1") ;2              puts("鋤禾日當午2");3          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用法
    1 #ifdef  N
    2 #error 錯誤,不能定義N
    3 #endif


  • #if用法
    1 #if num==1
    2 #error 小夥子你的除數不要寫為0,寫了哥會溢出的
    3 #endif

  • 內置宏定義__LINE__,__FILE__
     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 #line  1
     5 void main() //計數,從這一行開始
     6 {
     7     //改變行數,某一段到某一段一共多少行
    8 printf("%d\n", __LINE__); 9 char path[100]; 10 //獲取當前文件地址 11 sprintf(path, "%s", __FILE__); 12 printf("%s", path); 13 getchar(); 14 }

90.#define高級用法