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

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

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

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

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 作者:strongerHuang ? 2020-08-18 15:31 ? 次閱讀

C語言已經(jīng)連續(xù)幾個月占領(lǐng) TIOBE 編程語言排行榜首,成為最受歡迎的編程語言了。

C語言之所以那么受歡迎,除了C語言歷史悠久之外,還有它具有一些編程語言沒有的功能。那么,今年我們就來了解一下C語言的一些特殊功能。
一、ANSI C特殊標(biāo)準(zhǔn)定義 羅列一些常見的特殊定義:

__FILE__:正在編譯文件的路徑及文件名

__LINE__:正在編譯文件的行號

__DATE__:編譯時刻的日期字符串 如“July 19 2019”

__TIME__:編譯時刻的時間字符串 如”2200“

代碼:

char BuildFile[] = __FILE__;int  BuildLine = __LINE__;char BuildDate[] = __DATE__;char BuildTime[] = __TIME__;
printf("編譯文件路徑:%s
", BuildFile);printf("編譯代碼所在行:%d
", TestLine);printf("編譯日期:%s
", BuildDate);printf("編譯時間:%s
", BuildTime);

提示:__LINE__是整型數(shù)據(jù); 其實除了這些還有很多相關(guān)的定義,比如: 1.__FUNCTION__:函數(shù)名,類型為:字符常量指針。

char const* BuildFunName = __FUNCTION__;printf("函數(shù)名稱為:%s
", BuildFunName);
2.__VER__:IDE版本信息,類型為:整型。 如我用的IAR版本為:7.80.04,如下圖:

代碼:
int  IDEVersion = __VER__;printf("IDE版本:%d
", IDEVersion);

輸出:

IDE版本:7080004

二、可變參數(shù)

我們在學(xué)習(xí)C語言的時候,都知道printf是可變參數(shù)的函數(shù):

char a = 1;char b = 2;char c = 3;printf("a = %d
", a);printf("a = %d; b = %d
", a, b);printf("a = %d; b = %d; c = %d
", a, b, c);

上面就是可變參數(shù)printf的例子,也就是說參數(shù)可以一個也可以多個。

而接下來說的__VA_ARGS__,就是一個可變參數(shù)宏,與printf中可變參數(shù)的宏定義一個道理,是新C99規(guī)范中增加的。

1.關(guān)于__VA_ARGS__

__VA_ARGS__它是一個可變參數(shù)的宏,就是將左邊宏中“...” 的內(nèi)容原樣抄寫在右邊 __VA_ARGS__ 所在的位置。

要注意的是,printf 的輸出格式是括號內(nèi)左邊是字符串,右邊是變量,而且右變量與左輸出格式是一一對應(yīng)的,不對應(yīng)就會出錯??梢詤⒖聪旅婺莻€例子, __VA_ARGS__其實是遵循了printf的格式。

...缺省號代表一個可以變化的參數(shù)表。使用保留名 __VA_ARGS__ 把參數(shù)傳遞給宏。當(dāng)宏的調(diào)用展開時,實際的參數(shù)就傳遞給 printf()了。

2.實例說明

#define SENSOR_Printf(...) printf("--SENSOR--"__VA_ARGS__)int TemperatureVal = 25;SENSOR_Printf("溫度 = %d℃

", TemperatureVal);

輸出結(jié)果:

--SENSOR--溫度 = 25℃

用心的朋友可能會猜測的到:“...”類似等于“__VA_ARGS__”。

從例子中我們可以看得出來,__VA_ARGS__的用途,主要是用于可變參數(shù)的函數(shù)。我們使用較多的printf就是最常見的一個。

如果我們的工程很龐大,我們就可以將打印信息分類,這樣的好處就是方便我們識別各類打印信息。

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

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135561
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1920

    瀏覽量

    34502

原文標(biāo)題:C語言中幾種特殊標(biāo)準(zhǔn)定義和用法

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    C語言環(huán)境下訪問特殊功能寄存器sfr的經(jīng)驗

    單片機的特殊功能寄存器SFR,是SRAM地址已經(jīng)確定的SRAM單元,在C語言環(huán)境下對其訪問歸納起來有兩種方法
    的頭像 發(fā)表于 11-10 09:46 ?9184次閱讀
    在<b class='flag-5'>C</b><b class='flag-5'>語言</b>環(huán)境下訪問<b class='flag-5'>特殊功能</b>寄存器sfr的經(jīng)驗

    單片機的一些特殊功能寄存器定義

    #include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器typedef unsigned int u16; //對數(shù)據(jù)類型進行聲明定義typedef
    發(fā)表于 12-02 08:11

    單片機的一些特殊功能寄存器

    #include “reg51.h” //此文件中定義了單片機的一些特殊功能寄存器#include “intrins.h”typedef unsigned int u16; //對數(shù)據(jù)類型進行聲明
    發(fā)表于 12-07 13:22

    單片機的一些特殊功能寄存器定義

    #include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器#include //因為要用到左右移函數(shù),所以加入這個頭文件#define led P2//將
    發(fā)表于 01-06 07:49

    電源管理特殊功能寄存器PCON介紹

    電源管理特殊功能寄存器 PCON介紹:CMOS 型的MCS-51單片機 具有空閑和掉電兩種低功耗方式,其中空閑狀態(tài)也稱作cpu睡眠狀態(tài)PCON 字節(jié)地址是0x87有6個功能位:SMOD X X X
    發(fā)表于 01-25 06:45

    GD32F310開發(fā)板串口的一些特殊功能介紹

    串口主要用于通信和調(diào)試信息輸出,今天仔細觀察GDF310的數(shù)據(jù)手冊發(fā)現(xiàn)一些特殊功能:1、自動波特率檢測;2、數(shù)據(jù)發(fā)送/接受,高位在前/后;3、數(shù)據(jù)位反轉(zhuǎn);4、TX/RX管腳交換。針對以上的5個特殊
    發(fā)表于 09-22 15:40

    CH582如果打印一些特殊功能按鍵應(yīng)該怎么修改呢?

    使用CH582開發(fā)板燒錄HostU2Enum代碼后,USB2插入鍵盤,使用串口打印鍵值,音量加減等一些特殊功能按鍵沒有打印出,請問官方如果打印這些特殊功能按鍵應(yīng)該具體怎么修改呢?
    發(fā)表于 10-09 07:19

    USB鍵盤特殊功能鍵的實現(xiàn)

    USB鍵盤特殊功能鍵的實現(xiàn) 本文較為詳盡地介紹了在USB多媒體鍵盤系統(tǒng)中,特殊功能鍵的實現(xiàn)方法。關(guān)鍵詞: 通用串行總線;系統(tǒng)特殊功
    發(fā)表于 09-26 17:53 ?2374次閱讀
    USB鍵盤<b class='flag-5'>特殊功能</b>鍵的實現(xiàn)

    數(shù)碼相機特殊功能

    數(shù)碼相機特殊功能              特殊功能個很抽象的概念,對于每臺數(shù)碼相機,如果沒有一兩個亮點,難以吸
    發(fā)表于 12-18 15:02 ?394次閱讀

    佳能數(shù)碼相機特殊功能

    佳能數(shù)碼相機特殊功能              能令佳能引以為豪的“特殊功能”應(yīng)該是他的DiGIC技術(shù)和iSPA技術(shù)。
    發(fā)表于 12-18 15:10 ?345次閱讀

    什么是手機特殊功能

    什么是手機特殊功能         
    發(fā)表于 12-19 15:07 ?852次閱讀

    C51單片機特殊功能寄存器的詳細資料說明

    本文檔的主要內(nèi)容詳細介紹的是C51單片機特殊功能寄存器的詳細資料說明。
    發(fā)表于 04-12 18:27 ?4次下載
    <b class='flag-5'>C</b>51單片機<b class='flag-5'>特殊功能</b>寄存器的詳細資料說明

    邏輯電平之間的特殊功能互連

    本篇主要介紹邏輯互連中的一些具有特殊功能的互連。這些特殊功能包括總線保持、串聯(lián)阻尼電阻、熱插拔等。
    發(fā)表于 01-07 16:30 ?22次下載
    邏輯電平之間的<b class='flag-5'>特殊功能</b>互連

    【硬見小百科】單片機的特殊功能寄存器

    在單片機中有一些獨立的存儲單元是用來控制這些器件的,被稱之為特殊功能寄存器(SFR)。<特殊功能寄存器地址映象表()><特殊功能
    發(fā)表于 12-20 19:15 ?14次下載
    【硬見小百科】單片機的<b class='flag-5'>特殊功能</b>寄存器

    C語言和STM32學(xué)習(xí)的一些學(xué)習(xí)筆記

    自己總結(jié)的一些C語言和STM32F1學(xué)習(xí)的一些筆記,適合想快速了解學(xué)習(xí)C語言和STM32單片機的
    發(fā)表于 03-24 14:53 ?36次下載