色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言中#define的一些用法介紹概述

C語言編程學習基地 ? 2018-04-14 11:29 ? 次閱讀




今天整理了一些#define的用法,與大家共享!

1.簡單的define定義

#define MAXTIME 1000

一個簡單的MAXTIME就定義好了,它代表1000,如果在程序里面寫

if(i

編譯器在處理這個代碼之前會對MAXTIME進行處理替換為1000。

這樣的定義看起來類似于普通的常量定義CONST,但也有著不同,因為define的定義更像是簡單的文本替換,而不是作為一個量來使用,這個問題在下面反映的尤為突出。

2.define的“函數定義”

define可以像函數那樣接受一些參數,如下

#define max(x,y) (x)>(y)?(x):(y);

這個定義就將返回兩個數中較大的那個,看到了嗎?因為這個“函數”沒有類型檢查,就好像一個函數模板似的,當然,它絕對沒有模板那么安全就是了。可以作為一個簡單的模板來使用而已。

但是這樣做的話存在隱患,例子如下:

#define Add(a,b) a+b;

在一般使用的時候是沒有問題的,但是如果遇到如:c * Add(a,b) * d的時候就會出現問題,代數式的本意是a+b然后去和c,d相乘,但是因為使用了define(它只是一個簡單的替換),所以式子實際上變成了

c*a + b*d

另外舉一個例子:

#define pin (int*);

pin a,b;

本意是a和b都是int型指針,但是實際上變成int* a,b;

a是int型指針,而b是int型變量。

這是應該使用typedef來代替define,這樣a和b就都是int型指針了。

所以我們在定義的時候,養成一個良好的習慣,建議所有的層次都要加括號。

3.宏的單行定義

#define A(x) T_##x

#define B(x) #@x

#define C(x) #x

我們假設:x=1,則有:

A(1)------〉T_1

B(1)------〉'1'

C(1)------〉"1"

(這里參考了 hustli的文章)

3.define的多行定義

define可以替代多行的代碼,例如MFC中的宏定義(非常的經典,雖然讓人看了惡心)

#define MACRO(arg1, arg2) do { /

/* declarations */ /

stmt1; /

stmt2; /

/* ... */ /

} while(0) /* (no trailing ; ) */

關鍵是要在每一個換行的時候加上一個"/"

摘抄自https://www.blog.edu.cn/user1/16293/archives/2005/115370.shtml 修補了幾個bug

4.在大規模的開發過程中,特別是跨平臺和系統的軟件里,define最重要的功能是條件編譯。

就是:

#ifdef WINDOWS

......

......

#endif

#ifdef LINUX

......

......

#endif

可以在編譯的時候通過#define設置編譯環境

5.如何定義宏、取消宏

//定義宏

#define [MacroName] [MacroValue]

//取消宏

#undef [MacroName]

//普通宏

#define PI (3.1415926)

帶參數的宏

#define max(a,b) ((a)>(b)? (a),(b))

關鍵是十分容易產生錯誤,包括機器和人理解上的差異等等。

6.條件編譯

#ifdef XXX…(#else) … #endif

例如

#ifdef DV22_AUX_INPUT

#define AUX_MODE 3

#else

#define AUY_MODE 3

#endif

#ifndef XXX … (#else) … #endif

7.頭文件(.h)可以被頭文件或C文件包含;

重復包含(重復定義)

由于頭文件包含可以嵌套,那么C文件就有可能包含多次同一個頭文件,就可能出現重復定義的問題的。

通過條件編譯開關來避免重復包含(重復定義)

例如

#ifndef __headerfileXXX__

#define __headerfileXXX__

//文件內容

#endif

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136692
  • define
    +關注

    關注

    0

    文章

    15

    瀏覽量

    3742

原文標題:C語言中#define的用法介紹

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言typedef與#define用法和區別

    C語言編程中,typedef 和 #define是最常用語句,可能很多工作過幾年的工程師都沒有去深究過它們的一些用法和區別。
    發表于 10-12 10:39 ?679次閱讀

    C語言#define和typedef的區別

    C語言編程中,typedef 和 #define是最常用語句,可能很多工作過幾年的工程師都沒有去深究過它們的一些用法和區別。
    發表于 11-03 10:29 ?675次閱讀

    C語言中枚舉的基本概念和常見用法

    C語言中,枚舉是種方便組織和表示組相關常量的工具。枚舉類型有助于提高代碼的可讀性和可維護性。本文將介紹
    發表于 08-17 15:32 ?1448次閱讀

    C語言中位運算符的高級用法(1)

    在上篇文章中,我們介紹了&運算符的基礎用法,本篇文章,我們將介紹& 運算符的一些高級用法
    發表于 08-22 10:44 ?322次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>位運算符的高級<b class='flag-5'>用法</b>(1)

    C語言中位運算符的高級用法(2)

    在上篇文章中,我們介紹了&運算符的高級用法,本篇文章,我們將介紹| 運算符的一些高級用法
    發表于 08-22 10:45 ?325次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>位運算符的高級<b class='flag-5'>用法</b>(2)

    C語言中位運算符的高級用法(3)

    在上篇文章中,我們介紹了|運算符的高級用法,本篇文章,我們將介紹^ 運算符的一些高級用法
    發表于 08-22 10:47 ?254次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>位運算符的高級<b class='flag-5'>用法</b>(3)

    C語言中位運算符的高級用法(5)

    在上篇文章中,我們介紹了~運算符的高級用法,本篇文章,我們將介紹
    發表于 08-22 10:49 ?338次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>位運算符的高級<b class='flag-5'>用法</b>(5)

    單片機的C語言中位操作用法

    單片機的C語言中位操作用法
    發表于 08-17 15:04

    C語言中atoi()函數的用法 相關資料分享

    C語言中atoi()函數的用法
    發表于 07-01 08:12

    C語言中指針的介紹非常詳細

    C語言中指針的介紹非常詳細 C語言中指針的介紹非常詳細
    發表于 12-25 10:39 ?57次下載

    關于C語言一些特殊功能介紹

    C語言之所以那么受歡迎,除了C語言歷史悠久之外,還有它具有一些編程語言沒有的功能。那么,今年我們
    的頭像 發表于 08-18 15:31 ?2434次閱讀
    關于<b class='flag-5'>C</b><b class='flag-5'>語言</b>的<b class='flag-5'>一些</b>特殊功能<b class='flag-5'>介紹</b>

    C語言中的#和##的用法

    和conStr的參數,并且宏conStr和toString中均含有#或者##符號,所以A不能被解引用。導致不符合預期的情況出現。 3.2 解決方案 結果: 責任編輯:xj 原文標題:C語言中#和##的用法 文章出處:【微信公眾號
    的頭像 發表于 12-06 09:34 ?7.6w次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的#和##的<b class='flag-5'>用法</b>

    C語言中的typedef的用法

    在以前的學習中對于C語言中typedef和define的認識是,#define是宏,作用是簡單的替換,而typedef也是替換,只不過比define
    發表于 01-13 13:36 ?0次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的typedef的<b class='flag-5'>用法</b>

    INCA的一些用法

    INCA的一些用法
    的頭像 發表于 11-10 15:32 ?8982次閱讀

    介紹C語言中錯誤處理和異常處理的一些常用的方法和策略

    C語言種低級的、靜態的、結構化的編程語言,它沒有提供像C++或Java等高級語言中的異常處理
    的頭像 發表于 02-28 14:25 ?618次閱讀
    主站蜘蛛池模板: 老色哥网站| 国产69精品久久久久乱码免费| 国产精品久久久久久久久无码| 男男h开荤粗肉h文1v1| 亚洲涩福利高清在线| 国产偷抇久久精品A片蜜臀A| 日韩一区二区三区精品| xxxxhd17欧美老师| 热の中文 AV天堂| 闺蜜撬开我的腿用黄瓜折磨我| 欧美一道本一区二区三区| 2017日日干| 人人碰79免费视频| 国产午夜在线视频| 6080YYY午夜理论片在线观看| 男人的天堂黄色片| 国产成人精品电影| 小学生偷拍妈妈视频遭性教育| 国产精品青草久久福利不卡| 与子敌伦刺激对白亂輪亂性| 蜜芽视频在线观看视频免费播放| WWW国产亚洲精品久久| 性感尼姑风流寺| 妙玉被肉干高H潮文| 国产精品色吧国产精品| 永久免费毛片| 我半夜摸妺妺的奶C了她| 久久这里只有精品国产精品99| 哺乳期妇女挤奶水36d| 杨幂被视频在线观看| 色吧最新网址| 欧洲老妇人bb| 久久中文字幕人妻AV熟女| 国产精品日本无码久久一老A| 99国产亚洲精品无码成人| 亚洲中文字幕日产乱码2020| 色情在线avav| 91综合精品网站久久| 亚洲国产精品久久无套麻豆| 视频一区视频二区ae86| 日韩欧美一区二区三区在线|