C語言typedef與#define的區別

typedef和#define

define 沒有參加編譯,在預處理的時候就被替換掉了。

typedef參加編譯和鏈接。typedef是重命名,可以為枚舉結構體等等重新命名,提高代碼整潔。

一、typedef的用法

C語言中,typedef常用來定義一個標識符及關鍵字的別名,它是語言編譯過程的一部分,但它并不實際分配內存空間,實例像:

typedef    int       INT;
typedef   (int*)   pINT;

typedef可以增強程序的可讀性,以及標識符的靈活性,但它也有“非直觀性”等缺點。

二、define的用法

define為一宏定義語句,通常用它來定義常量(包括無參量與帶參量),以及用來實現那些“表面似和善、背后一長串”的宏,它本身并不在編譯過程中進行,而是在這之前(預處理過程)就已經完成了,但也因此難以發現潛在的錯誤及其它代碼維護問題,它的實例像:

define   FALSE        0
define   TRUE         1
define   Add(a,b)     ((a)+(b));
define   Loop_10      for (int i=0; i<10; i++)

三、typedef與#define的區別

  • #define 歸預處理器管,typedef 歸編譯器管。
  • #define 是替換,typedef是重命名

個人結論:這兩個都少用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382861.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382861.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382861.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

django models模型 內部類 class Meta 簡介

class Meta: #這個屬性是定義當前的模型類是不是一個抽象類。所謂抽象類是不會相應數據庫表的。一般我們用它來歸納一些公共屬性字段&#xff0c;然后繼承它的子類能夠繼承這些字段。abstractTrue #db_table是用于指定自己定義數據庫表名的db_table test#因為Django的管理方法…

阻斷血緣關系以及checkpoint文件清理

spark-sql讀寫同一張表&#xff0c;報錯Cannot overwrite a path that is also being read from 1. 增加checkpoint&#xff0c;設置檢查點阻斷血緣關系 sparkSession.sparkContext.setCheckpointDir("/tmp/spark/job/OrderOnlineSparkJob")val oldOneIdTagSql s&…

linux之睡眠函數(my_sleep)

我們在程序中&#xff0c;很多次用到sleep()函數&#xff0c;讓它睡眠幾秒后再執行該進程。今天呢&#xff0c;我要給大家實現一下sleep函數。 看看代碼哦&#xff1a; 運行結果&#xff1a; 結果中每隔三秒鐘&#xff0c;打印一條語句。實現了sleep(3)的功能。 關于sleep函數…

C語言 防止頭文件被多次引用

comm.h和comm.c是公共模塊。 test1.h和test1.c使用了公共模塊。 test2.h和test2.c使用了了公共模塊。 test.h和test.c使?用了了test1模塊和test2模塊。 這樣最終程序中就會出現兩份comm.h的內容。這樣就造成了了文件內容的重復。 1.方法1 文件開頭加上這一句就ok #prag…

python字符串切片操作

name abcdefghijk name[2:-1] cdefghijname[2:] cdefghijk # 第三個參數是步長 name[2:-1:2] cegi# 字符串反轉 name[::-1] name[-1::-1] kjihgfedcba kjihgfedcba

機器思維。一些讓我眼前一亮的算法。

用人腦相處了計算機處理數據的方式。而不是 人腦處理的方式—>用計算機的語言表達 人腦處理的方式—>計算機處理的方式—>用計算機的語言表達

python 之 __new__ 方法理解

python的new方法 使用場景不同效果也不一樣 一種是指定元類時候&#xff0c; metaclassMyType 類型 這種方式 在解釋器執行到 metaclassCrawlerProxyMetaclass 的時候&#xff0c; __new__方法就開始執行&#xff01; 這里的 __new__方法是用來創建類對象的 class CrawlerProx…

詳解強制類型轉換

今天談談類型轉換的問題吧&#xff0c;之前我們也遇到過類型轉換&#xff0c;比如c語言中這樣的賦值&#xff1a; 顯然&#xff0c;i和j是不同類型的變量&#xff0c;但是卻可以完成賦值&#xff0c;結果是這樣的&#xff1a; 其實它們是做了隱式的類型轉換&#xff0c;相當于&…

面試--輸入一堆隨機數(0-1000),這里面會有重復的數字,把他們去除掉。然后由大到小排列。

1.問題說明 11 10 20 40 32 67 40 20 89 300 400 15 10 15 20//只顯示1次 32 40//只顯示1次 67 89 300 400 正常的算法&#xff1a; 1.遍歷所有數組&#xff0c;去除掉重復的數字 2.使用XX排序法&#xff0c;進行數字的排序。 眼前一亮的機器算法 1.生成1-1000的數組&am…

c++之類型萃取

剛剛我們接觸過模板類&#xff0c;類似于這樣的&#xff1a; 在這個類中&#xff0c;我們如何知道它是什么類型的呢&#xff1f;這里&#xff0c;我們可以在類中加入一個內嵌類型&#xff0c;如&#xff1a; 這樣就可以知道它是用戶自定義的還是本身類型就擁有的&#xff0c;我…

django xadmin出現的問題

1.File “/home/yuanqi/.virtualenvs/djangodev1/lib/python3.5/site-packages/xadmin/sites.py”, line 9, in reload(sys) import importlib importlib.reload(sys)# sys.setdefaultencoding("utf-8")把相應文件改為上述這樣

一道面試題--兩個int(32位)整數m和n的二進制表達中,有多少個位(bit)不同

1.問題說明 十進制4 0100 十進制8 1000二進制不同的 0100 1000有兩位不同 正常的算法 1.兩個數字與1&#xff0c;拿出兩個數字的最后一位&#xff0c;比較是否相同&#xff0c;直到右移32次&#xff0c; for (int i 0; i < 32; i){if ((m & 1) ! (n & 1)){count…

時間復雜度空間復雜度

我們編過不少代碼&#xff0c;起初學習的時候我們習慣性的認為&#xff0c;只要代碼能正確的運行就ok啦~很少考慮代碼的優化帶來的好處。今天說一下影響代碼性能的兩個重要指標--時間復雜度&空間復雜度。 時間復雜度&#xff1a;就是函數&#xff08;指數學中的函數&#…

C語言 函數遞歸例題解析

1.接受一個整形值&#xff08;無符號&#xff09;&#xff0c;把它轉換為 字符并打印它模擬實現strlen()函數。3.求n的階乘4.斐波那契數列總結 1.接受一個整形值&#xff08;無符號&#xff09;&#xff0c;把它轉換為 字符并打印它 void fun(int x) {if (x > 9){fun(x/10)…

xpath 簡單用法小記

1 xpath定位 沒有某個屬性的元素 例如定位沒有class屬性的td tds tr.xpath(.//td[not(class)])

剖析printf函數

printf是什么&#xff0c;對于起初學習c語言的同學來說肯定都特別的疑惑。在這里&#xff0c;解答一下&#xff1a;它是一個函數。既然是一個函數的話&#xff0c;想必肯定有返回值和參數吧。那么它的返回值和參數是什么呢&#xff1f; 1、看一下這個例子&#xff0c;可能更好…

大端小端詳解

文章目錄為什么有大端小端&#xff1f;大端&#xff1a;低位放在高地址&#xff0c;高位放在低地址小端&#xff1a;低位放在低地址&#xff0c;高位放在高地址面試考點&#xff1a;代碼代碼2一道面試題為什么有大端小端&#xff1f; 大端&#xff1a;低位放在高地址&#xff0…

xpath 簡單小記

1 定位沒有class屬性的td元素 tds tr.xpath(.//td[not(class)])

詳解volatile關鍵字

volatile字面意思&#xff1a;易變的。在計算機里&#xff0c;是防止優化的意思&#xff0c;然而是怎么防止優化的呢&#xff1f;待我一一道來哦。 先看這樣一個例子&#xff1a; <span style"font-size:18px;">#include<iostream> using namespace std…