程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 宏定義&CodeBlocks&Glib

宏定義&CodeBlocks&Glib

編輯:關於C語言

一、gcc的參數中
-Dmacro             等價於代碼裡   #define macro -Dmacro=value  等價於代碼裡   #define macro value -Umacro            等價於代碼裡    #undef macro

二、宏定義時 ,  斜槓("\")是用來續行, "#"用來把參數轉換成字符串,是給參數加上雙引號。 "##"則用來連接前後兩個參數,把它們變成一個字符串, "#@"是給參數加上單引號。  例如 #define Conn(x,y) x##y  #define ToChar(a) #@a   #define ToString(x) #x   int n = Conn(123,456);    結果n=123456;  char* str = Conn("asdf""adf") 結果str = "asdfadf";  char a = ToChar(1); 結果a='1';  char* str = ToString(123132); 結果str="123132";   三、在CodeBlocks裡使用-D定義值為字符串的宏,存在Bug   如:定義Glib的G_LOG_DOMAIN的日志域宏時,在編譯選項裡加入 -DG_LOG_DOMAIN="plugin_dispatch"   構建時提示 plugin_dispatch未定義,明顯是宏預處理時,把雙引號丟掉了。 解決辦法是使用gmacros.h的#define    G_STRINGIFY_ARG(contents)    #contents G_LOG_DOMAIN=G_STRINGIFY_ARG(plugin_dispatch) 構建提示syntax error near unexpected token `(' 改成G_LOG_DOMAIN="G_STRINGIFY_ARG(plugin_dispatch)"構建成功  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved