c macro寫法

相關問題 & 資訊整理

c macro寫法

有時候我們在翻閱原始碼的時候會看到類似這樣的寫法: #define FOO(x, y) - do - typeof(x) tmp = x; - x = y; - y = tmp; - } while (0). 當然有的人會提出質疑,並且習慣使用邊界區塊(scope block)的寫法: #define FOO(x, y) - - typeof(x) tmp = x; - x = y; - y = tmp; - }. 乍看之下比較漂亮,但事實上後者的寫法有潛在的問題 ...,別論可讀性和可除錯性的問題, OpenGL 自己本身已經很豐富的, 包含很多概念, 用這個已經不輕鬆, 在OpenGL 之上, 再架上macro helper, 只會愈幫愈忙, 因為macro 的句法結構過於鬆散, 加上功能所限, 再複雜的macro 也沒辦法包羅OpenGL 的變化, 以至, 使用複雜的macro helper 之後, 還是需要自己動手腳做macro helper 的工作, ... , [Note] 先解釋再看如何寫C語言中的巨集(macro) 就是用#define這個語法,描述一段算式或是變數在程式中可呼叫使用 寫法#define 巨集名稱 算式ps:巨集名稱習慣上用大寫字母 範例#define TEMP(c) c*9/5+32 int main() printf("%d-n",TEMP(42)); } 輸出107 其他寫法求最大最小值#define MAX( x, y ) ( ((x) > (y)) ?,使用巨集的方法. • 巨集是一種方便的程式設計方式,在程式. 中看到簡短的名稱, 就知道是代表那段長的. 敘述。 • 定義巨集. • 定義巨集的位置. • 巨集取代算式. 4. 定義巨集. • 使用巨集名稱前, 要先定義。 • 定義巨集的寫法如下:. #define 巨集名稱算式 ... , 宏的替换与代码展开. 编译器在预编译时会把用到宏的代码替换成宏定义的表达式。 如上面定义的宏 multi ,可以如下代码中使用: 代码文件: macro.c ... 在”++”、”- -“运算上。 所以在有参数的宏中,为了使用运算与预期的一致,需要对参数增加左右括号以保证运算结果,并且取消在宏定义处”;”的结尾。定义写法如下: ...,這個問題, 如果限定只能使用#define, 而且C 編譯器的preprocessor 又不支援的話目前所知是無解的. 看過有人使用第二組括號來將變動參數括住, 好讓preprocessor 把它當成一個參數而已, 但限制是程式一開始就要換一個寫法, 所以只能處理自己寫的程式, 想要快速移植別人的程式就不管用了. #define DEGUG(FORMAT,ARGS) ... , C語言當中的巨集處理器,支援條件式展開的功能,這種功能對C 語言相當重要,由其在專案管理上更是不可或缺。以下,我們將說明C語言中條件式展開的巨集處理器之用途。首先,請讀者看範例2 (a) 的程式,該程式用#ifdef 條件式巨集指令,定義了bugs 變數與error(msg) 巨集函數。並且在程式的最後利用error() 函數 ...,從這轉載來的1,防止一個頭檔被重複包含#ifndef COMDEF_H #define COMDEF_H //頭檔內容#endif 2,重新定義一些類型,防止由於各種平臺和編譯器的不同,而產生的類. , Win32 中常用到的HIWORD、LOWORD、HIBYTE、LOBYTE 也是由macro 來的. #define LOWORD(a) ((WORD)(a)) #define HIWORD(a) ((WORD)(((DWORD)(a) >> 16) & 0xFFFF)). 另有種寫法注意,. #define FOO (4+FOO). 上面這行並不會被一直展開成4+(4+(4+....(4+FOO)+FOO)+FOO+....),. 只會展開一層變 4 + ..., [C++ 文章收集] C++中#define的用法. 轉載自 這裡 前言: 這裡簡單說明了#define 的幾種使用方法. 簡單的define定義: #define MAXTIME 1000 一個簡單的MAXTIME就定義好了,它代表1000,如果在程序裡面寫: int i = MAXTIME; 編譯器在處理這個代碼之前會對MAXTIME進行處理替換為1000。 這樣的定義看起來 ...

相關軟體 IntelliType Pro 資訊

IntelliType Pro
IntelliType Pro 是一個免費的軟件驅動程序包,允許用戶在 Win200 之後的所有 Windows 版本中自定義他們的 Microsoft® 鍵盤,並使其特殊功能與他們的需求完美結合。它可以用來重新編程密鑰來啟動應用程序,打開文件或網頁,並執行更多的應用程序特定的功能  如復制和粘貼,查找,查找和替換,等等。 IntelliType Pro 軟件涵蓋了每個微軟品牌鍵... IntelliType Pro 軟體介紹

c macro寫法 相關參考資料
C 語言之多行巨集- 不歸錄 - 大兜

有時候我們在翻閱原始碼的時候會看到類似這樣的寫法: #define FOO(x, y) - do - typeof(x) tmp = x; - x = y; - y = tmp; - } while (0). 當然有的人會提出質疑,並且習慣使用邊界區塊(scope block)的寫法: #define FOO(x, y) - - typeof(x) tmp = x; - x = y; - y...

https://tonytonyjan.net

好高段的C寫法! C++ 程式設計俱樂部

別論可讀性和可除錯性的問題, OpenGL 自己本身已經很豐富的, 包含很多概念, 用這個已經不輕鬆, 在OpenGL 之上, 再架上macro helper, 只會愈幫愈忙, 因為macro 的句法結構過於鬆散, 加上功能所限, 再複雜的macro 也沒辦法包羅OpenGL 的變化, 以至, 使用複雜的macro helper 之後, 還是需要自己動手腳做macro helper 的工作,&nb...

http://www.programmer-club.com

[C Program] C 巨集(macro) @ AAA :: 隨意窩Xuite日誌

[Note] 先解釋再看如何寫C語言中的巨集(macro) 就是用#define這個語法,描述一段算式或是變數在程式中可呼叫使用 寫法#define 巨集名稱 算式ps:巨集名稱習慣上用大寫字母 範例#define TEMP(c) c*9/5+32 int main() printf("%d-n",TEMP(42)); } 輸出107 其他寫法求最大最小值#define MA...

http://blog.xuite.net

第八章巨集本章簡介

使用巨集的方法. • 巨集是一種方便的程式設計方式,在程式. 中看到簡短的名稱, 就知道是代表那段長的. 敘述。 • 定義巨集. • 定義巨集的位置. • 巨集取代算式. 4. 定義巨集. • 使用巨集名稱前, 要先定義。 • 定義巨集的寫法如下:. #define 巨集名稱算式 ...

http://wayne.cif.takming.edu.t

【CC++】宏(macro)定义与使用| Sodino's Blog

宏的替换与代码展开. 编译器在预编译时会把用到宏的代码替换成宏定义的表达式。 如上面定义的宏 multi ,可以如下代码中使用: 代码文件: macro.c ... 在”++”、”- -“运算上。 所以在有参数的宏中,为了使用运算与预期的一致,需要对参数增加左右括号以保证运算结果,并且取消在宏定义处”;”的结尾。定义写法如下: ...

http://sodino.com

C 語言:用巨集定義置換function (關於有... 的巨集置換) @ 傑克! 真是太 ...

這個問題, 如果限定只能使用#define, 而且C 編譯器的preprocessor 又不支援的話目前所知是無解的. 看過有人使用第二組括號來將變動參數括住, 好讓preprocessor 把它當成一個參數而已, 但限制是程式一開始就要換一個寫法, 所以只能處理自己寫的程式, 想要快速移植別人的程式就不管用了. #define DEGUG(FORMAT,ARGS) ...

http://magicjackting.pixnet.ne

GNU 的巨集展開功能(C 語言) - 陳鍾誠的網站

C語言當中的巨集處理器,支援條件式展開的功能,這種功能對C 語言相當重要,由其在專案管理上更是不可或缺。以下,我們將說明C語言中條件式展開的巨集處理器之用途。首先,請讀者看範例2 (a) 的程式,該程式用#ifdef 條件式巨集指令,定義了bugs 變數與error(msg) 巨集函數。並且在程式的最後利用error() 函數 ...

http://ccckmit.wikidot.com

C語言巨集定義技巧@ Iver's Blog :: 痞客邦:: - 痞客邦PIXNET

從這轉載來的1,防止一個頭檔被重複包含#ifndef COMDEF_H #define COMDEF_H //頭檔內容#endif 2,重新定義一些類型,防止由於各種平臺和編譯器的不同,而產生的類.

http://lver76.pixnet.net

預處理器(Preprocessor) @ Edison.X. Blog :: 痞客邦::

Win32 中常用到的HIWORD、LOWORD、HIBYTE、LOBYTE 也是由macro 來的. #define LOWORD(a) ((WORD)(a)) #define HIWORD(a) ((WORD)(((DWORD)(a) >> 16) & 0xFFFF)). 另有種寫法注意,. #define FOO (4+FOO). 上面這行並不會被一直展開成4+(4+(...

http://edisonx.pixnet.net

程式扎記: [C++ 文章收集] C++中#define的用法

[C++ 文章收集] C++中#define的用法. 轉載自 這裡 前言: 這裡簡單說明了#define 的幾種使用方法. 簡單的define定義: #define MAXTIME 1000 一個簡單的MAXTIME就定義好了,它代表1000,如果在程序裡面寫: int i = MAXTIME; 編譯器在處理這個代碼之前會對MAXTIME進行處理替換為1000。 這樣的定義看起來 .....

http://puremonkey2010.blogspot