宏定義陷阱與typedef
#define int_ptr int* int_ptr point1,point2;
經預處理後,第二行變為 int * point1,point2.
這就意味著,point1 是一個指向int的指針,但是 point2卻是 int類型的了。
所以,宏定義的連續變量的定義中 ,不能保證所有的變量為同一樣的類型!!
typedef不同,他可以保證連續性。
typedef char * String String str1,str2;
-------------------------------------------------------------------------------------------
另外:
#define INT int unsigned INT number;
這句話是沒有問題。
但是:
typedef int INT unsigned INT number;
這就是錯誤操作!
宏定義陷阱與typedef
相關推薦
宏定義陷阱與typedef
一個 typedef ptr 變量 所有 string efi har 不能 #define int_ptr int* int_ptr point1,point2; 經預處理後,第二行變為 int * point1,point2. 這就意味著,point1 是
C/C++中const關鍵字的用法及其與宏定義的比較
類型安全 屬性 const關鍵字 code oid 程序 函數返回值 存儲空間 臨時對象 1.const關鍵字的性質 簡單來說:const關鍵字修飾的變量具有常屬性。 即它所修飾的變量不能被修改。 2.修飾局部變量 1 const int a = 10; 2 int co
Linux 內核中 likely 與 unlikely 的宏定義解析
帶來 內核版本 sta don 等價 ddc 編譯 views lines 在 2.6 內核中,隨處能夠見到 likely() 和 unlikely() 的身影,那麽為什麽要用它們?它們之間有什麽差別? 首先要明白: if(likel
[轉]c語言宏定義#define的理解與資料整理
執行 跟蹤 single 字母 number 而是 字符串 endif 一段 原文地址:http://www.cnblogs.com/haore147/p/3646934.html 1. 利用define來定義 數值宏常量 #define 宏定義是個演技非常高超的替
預處理、const、static與sizeof-用宏定義得到一個字的高位和低位字節
fine color byte pre log word sizeof pan static 1:代碼如下: #define WORD_LO(XXX) ((byte) (word)(XXX) & 255) #define WORD_HI(XXX) ((byte)
6、C_宏定義與預處理、函數與函數庫
a10 使用 不可 find 字符串比較 pos cde 文件包含 mnt C語言預處理理論 由源碼到可執行程序的過程 源碼.c->(編譯)->elf可執行程序 源碼.c->(編譯)->目標文件.o->(鏈接)->elf可執行程
常用宏定義 - 獲取橫豎屏寬度與高度
ive allow resp selector 橫豎 clas version nat main 需要橫屏或者豎屏,獲取屏幕寬度與高度 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000 // 當前Xcode支持iOS8及以上
結構體定義:struct與typedef struct 用法詳解和用法小結
黑體二 三是關鍵 一、typedef的用法 在C/C++語言中,typedef常用來定義一個識別符號及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配記憶體空間,例項像: typedef int INT; typedef int ARRAY[10]; type
宏定義中的“#”與“##”
() 在一起 string include star 但是 return 宏定義 block 宏定義在C/C++中使用的非常多,一方面定義一些常量,另一方面定義一些通用函數,但是有些宏定義實現較為復雜,尤其是很多帶#或##的宏定義,令很多人讀起來很不解,下面就簡單介紹一下宏
第六章 實驗報告 (函數與宏定義)
錯誤 ror if條件語句 輸入 can main func 三角形 有一個 C程序設計實驗報告 實驗項目: 6.4.1.1編寫由三角形三邊求面積的函數 6.4.1.2編寫求N的階層 6.4.1.3求兩個整數的最大公約數 6.4.1.4打印輸出的指定圖形 6.4.2.1模
C語言宏定義技巧——多次包括頭文件內容不同
ear 文件 我們 art bsp enum class 包括 nbsp 1、 頭文件定義例如以下: /* declears in “funcs.h” */ FUNC_1(ID_FUN1_001) FUNC_1(ID_FUN1_002) FUNC_2(ID_FUN2_
c++編譯時打印宏定義
get 使用 path oca int 信息 編譯 efi 定義 #pragma message("this is message") #pragma message只能打印字符串,如果想打印任何宏定義可使用: #define PRINT_MACRO_
《linux 內核全然剖析》 筆記 CODE_SPACE 宏定義分析
否則 內核 定義 center ace .net 代碼段 fff 當前 在memory.c裏面。遇到一個宏定義,例如以下: #define CODE_SPACE(addr) ((((addr)+4095)&~4095) < current->st
define與typedef
code 後者 define 結構 span 類型別名 優點 本質 沒有 #define與typedef有相似之處,但二者有本質區別 1 #define INTEGER int 和 typedef int INTEGER; 程序中INTEGER都可當做int使用,前者是
_IO, _IOR, _IOW, _IOWR 宏的用法與解析
內存 返回值 bits 分辨 上傳 正是 ron 了解 asm 今天在寫字符驅動驗證程序的時候要用到ioctl函數,其中有一個cmd參數,搞了半天也不了解是什麽意思,那個cmd還有什麽命令碼了什麽的,還好google下,覺得這篇文章寫的不錯,就轉來看看:在驅動程序裏, io
ATL中宏定義offsetofclass的分析
推斷 文章 指向 [] atl 嘗試 tla water appdata 近日學習ATL,通過對宏定義offsetofclass的解惑過程。順便分析下虛函數表,以及通過虛函數表調用函數的問題。 1 解開ATL中宏定義offsetofclass的疑惑
最全Pycharm教程(24)——Pycharm編輯器功能之宏定義
ans 指針 ext election ger rda 宏定義 中源 全選 1、為什麽使用宏 增加你須要反復某種操作非常多次。比如選中源代碼並將其發送到控制臺端調試,我們能不能將著一系列操作簡化為一步,甚至用一組快捷鍵來取代呢? 2、準備工作 (
Linux下的兩個經典宏定義【轉】
unsigned 結果 type gen pause 5-0 成員變量 32位系統 取出 轉自:http://www.linuxidc.com/Linux/2015-07/120014.htm 本文首先介紹Linux下的經典宏定義,感受極客的智慧,然後根據該經典定義為下篇
ios oc單例宏定義
turn isp fin sin spa pat har b- with #undef AS_SINGLETON #define AS_SINGLETON( __class ) \ - (__class *)sharedInstance; \ + (__class *)
C語言的陷阱之typedef
c語言的陷阱之typedeftypedef是一個關鍵字,可以重命名一些數據類型也可以重定義一些新的數據類型。我們從以下幾個角度去理解typedef。1.typedef和普通數據類型類型typedef int MYINT;int a = 10; MYINT B = 20;123123我們給int重命名成MYIN