在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內(nèi)不再提示

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

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




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

1.簡單的define定義

#define MAXTIME 1000

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

if(i

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

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

2.define的“函數(shù)定義”

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

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

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

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

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

在一般使用的時候是沒有問題的,但是如果遇到如:c * Add(a,b) * d的時候就會出現(xiàn)問題,代數(shù)式的本意是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型指針了。

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

3.宏的單行定義

#define A(x) T_##x

#define B(x) #@x

#define C(x) #x

我們假設(shè):x=1,則有:

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

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

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

(這里參考了 hustli的文章)

3.define的多行定義

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

#define MACRO(arg1, arg2) do { /

/* declarations */ /

stmt1; /

stmt2; /

/* ... */ /

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

關(guān)鍵是要在每一個換行的時候加上一個"/"

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

4.在大規(guī)模的開發(fā)過程中,特別是跨平臺和系統(tǒng)的軟件里,define最重要的功能是條件編譯。

就是:

#ifdef WINDOWS

......

......

#endif

#ifdef LINUX

......

......

#endif

可以在編譯的時候通過#define設(shè)置編譯環(huán)境

5.如何定義宏、取消宏

//定義宏

#define [MacroName] [MacroValue]

//取消宏

#undef [MacroName]

//普通宏

#define PI (3.1415926)

帶參數(shù)的宏

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

關(guān)鍵是十分容易產(chǎn)生錯誤,包括機器和人理解上的差異等等。

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文件就有可能包含多次同一個頭文件,就可能出現(xiàn)重復定義的問題的。

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

例如

#ifndef __headerfileXXX__

#define __headerfileXXX__

//文件內(nèi)容

#endif

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

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140560
  • define
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    3896

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

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

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    C語言typedef與#define用法和區(qū)別

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

    C語言#define和typedef的區(qū)別

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

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

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

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

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

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

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

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

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

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

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

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

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

    C語言中atoi()函數(shù)的用法 相關(guān)資料分享

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

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

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

    關(guān)于C語言一些特殊功能介紹

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

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

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

    C語言中的typedef的用法

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

    INCA的一些用法

    INCA的一些用法
    的頭像 發(fā)表于 11-10 15:32 ?1.1w次閱讀

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

    C語言種低級的、靜態(tài)的、結(jié)構(gòu)化的編程語言,它沒有提供像C++或Java等高級語言中的異常處理
    的頭像 發(fā)表于 02-28 14:25 ?916次閱讀
    主站蜘蛛池模板: 天天干天天日天天射天天操毛片 | 男人的天堂黄色 | 色费女人18女人毛片免费视频 | 美女扒开尿口给男人爽的视频 | 日韩免费一级毛片 | 亚洲激情婷婷 | 亚洲视频天天射 | 亚洲aa| 国产性大片黄在线观看在线放 | 亚洲国产视频网 | 国产手机在线 | 69日本人xxxxxxxx色 | 人人爽人人爱 | 午夜在线播放视频在线观看视频 | 第一页综合 | 大伊人网 | 啪啪免费网站视频观看 | 91久久国产青草亚洲 | 河南毛片 | 色视频大全 | 免费免播放器在线视频观看 | 又色又爽又黄视频 | 国产成人精品日本亚洲网站 | 99久久精品国产自免费 | 四虎东方va私人影库在线观看 | 色噜噜网站 | 小雪被老外黑人撑破了 | 全国男人的天堂网站 | 九色婷婷| 性色欧美xo影院 | 久久人视频 | 亚洲欧美色视频 | 一级毛毛片毛片毛片毛片在线看 | 色婷婷亚洲十月十月色天 | 免费 视频 | 国产色网址 | 欧美日韩影院 | 国产美女一级ba大片免色 | 老师你好滑下面好湿h | 久久久国产乱子伦精品 | 毛片大全在线 |