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

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

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

3天內不再提示

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

RTThread物聯網操作系統 ? 來源:RTThread物聯網操作系統 ? 作者:strongerHuang ? 2020-08-18 15:31 ? 次閱讀

C語言已經連續幾個月占領 TIOBE 編程語言排行榜首,成為最受歡迎的編程語言了。

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

__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__是整型數據; 其實除了這些還有很多相關的定義,比如: 1.__FUNCTION__:函數名,類型為:字符常量指針。

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

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

輸出:

IDE版本:7080004

二、可變參數

我們在學習C語言的時候,都知道printf是可變參數的函數:

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);

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

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

1.關于__VA_ARGS__

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

要注意的是,printf 的輸出格式是括號內左邊是字符串,右邊是變量,而且右變量與左輸出格式是一一對應的,不對應就會出錯。可以參看下面那個例子, __VA_ARGS__其實是遵循了printf的格式。

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

2.實例說明

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

", TemperatureVal);

輸出結果:

--SENSOR--溫度 = 25℃

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

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

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

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

    關注

    180

    文章

    7608

    瀏覽量

    137111
  • 編程語言
    +關注

    關注

    10

    文章

    1947

    瀏覽量

    34813

原文標題:C語言中幾種特殊標準定義和用法

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言環境下訪問特殊功能寄存器sfr的經驗

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

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

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

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

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

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

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

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

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

    GD32F310開發板串口的一些特殊功能介紹

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

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

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

    USB鍵盤特殊功能鍵的實現

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

    數碼相機特殊功能

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

    佳能數碼相機特殊功能

    佳能數碼相機特殊功能              能令佳能引以為豪的“特殊功能”應該是他的DiGIC技術和iSPA技術。
    發表于 12-18 15:10 ?357次閱讀

    什么是手機特殊功能

    什么是手機特殊功能         
    發表于 12-19 15:07 ?873次閱讀

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

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

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

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

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

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

    C語言和STM32學習的一些學習筆記

    自己總結的一些C語言和STM32F1學習的一些筆記,適合想快速了解學習C語言和STM32單片機的
    發表于 03-24 14:53 ?36次下載
    主站蜘蛛池模板: 欧美夜夜操| www.好吊色| 最新版资源在线天堂| 大尺度视频在线| 中文字幕在线观看你懂的| 最新国产精品视频免费看| 夜夜gan| 手机看片1024日韩| 久久国产香蕉视频| 亚洲欧美日韩国产一区二区三区精品| 亚洲卡一卡2卡三卡4卡国色| 男人j进入女人j在线视频| 海棠高h粗暴调教双性男男| 资源在线www天堂| 四虎永久在线精品| 拍拍拍交性免费视频| 久久香蕉国产精品一区二区三| 国产精品嫩草影院一二三区入口| 香蕉午夜视频| 国产欧美一级片| 亚洲一区二区三区深夜天堂| 在线观看你懂的网址| 日本高清视频色www在线观看| 久久免费手机视频| 午夜视频福利在线| 在线免费观看h| 种子天堂bt| 欧美生活性色| 18视频网站在线观看| 国产高清亚洲| 久久99久久精品国产99热| 色视频欧美| 丁香六月 久久久| 精品福利在线视频| 丝袜美腿一区| 色拍拍视频| 成 人 免 费 黄 色| 丁香婷婷基地| 日本久久黄色| 午夜影音| 日本高清www|