C語言——在頭?件中#if、_STDC_等字?起什么作??

一、問題

????????通常,?些程序員都不會去研究頭?件中的內容是什么含義,總覺得亂亂的,有很多 #if、_STDC_、#line 等字符,那么這些字符都各代表什么呢,在頭?件中又起到什么作?呢?

二、解答

????????在頭?件中存在類似于 #if、#undef、#error 等樣式的字符,這些都是 ANSI 標準定義的C語?預處理指令。相關的預處理指令有:

(1)#define:作?是宏定義。

(2)#under:作?是撤銷已定義過的宏名。

(3)#include:作?是使編譯程序將另?源?件嵌?帶有 #include 的源?件中。

(4)#if、#else、#elif 和 #endif:其中,#if 的?般含義是如果 #if 后?的常量表達式為 true,則編譯它與 #endif 之間的代碼,否則跳過這些代碼。命令 #endif 標識?個 #if 塊的結束。#else 命令的功能有點像 C 語?中的 else,當 #if失敗,就進? #else 的另?個選擇。#elif 命令意義與 else if 相同,它形成?個 if else-if 形式的語句,可以進?多種編譯選擇。

(5)#ifdef 和 #ifndef:其中,預處理指令 #ifdef 表示“如果有定義”,? #ifndef 表示“如果?定義”,兩個指令是條件編譯的另?種?法。

(6)#line:它的作?是改變當前?數和?件名稱,它們是在編譯程序中預定義的標識符命令的基本形式,如 #line member[“filename”]。

(7)#error:作?是在編譯程序時,只要遇到 #error 就會?成?個編譯錯誤的提示消息,并停?編譯。

(8)#pragma:該指令是為實現時定義的命令,它允許向編譯程序傳送各種指令。例如,編譯程序可能有?種選擇,它?持對程序執?的跟蹤,可? #pragma 語句指定?個跟蹤選擇。

????????在頭?件中,除了這些預處理指令,還有?些由下劃線組成的字符,它們又起什么作?呢?在 ANSI 標準 C 語?中,還定義了由兩個下劃線和?個標識符組成的宏。例如:

(1)LINE:表?正在編譯的?件的?號。

(2)_FILE:表?正在編譯的?件的名字。

(3)_DATE_:表?編譯時刻的?期字符串,如“12 Dec 2011”。

(4)_TIME:表?編譯時刻的時間字符串,如“15:17:29”。

(5)_STDC_:判浙該?件是不是定義成標準 C 程序。

三、總結

????????若編譯器是?標準的,那么可能僅?持以上宏的?部分,也可能還提供其他的預定義的宏名。

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

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

相關文章

智慧校園建設的進階之路

智慧校園的建設現已到達了老練的階段,許多學校設備充滿著數字化信息,進出宿舍樓,校園一卡通體系會記載下學生信息,外來人員闖入會報警,翻開電腦就能查到學生是否在宿舍等……學生的學習和日子都充滿了數字化的痕跡。但…

C# WPF入門學習(三)

目錄 核心架構 核心組件和概念 1. XAML(eXtensible Application Markup Language) 2. 依賴屬性(Dependency Properties) 3. 路由事件(Routed Events) 4. 數據綁定 5. 命令(Commands&…

itertools內置模塊的過濾妙用

itertools內置模塊的妙用 過濾源迭代器中的元素 Python內置itertools模塊里有一些函數可以過濾源迭代器中的元素。 islice islice可以在不拷貝數據的前提下,按照下標切割源迭代器。可以只給出切割的終點,也可以同時給出起點和終點,還可以…

MongoDB 覆蓋索引查詢:提升性能的完整指南

MongoDB 覆蓋索引查詢是一種優化數據庫查詢性能的技術,它通過創建適當的索引,使查詢可以直接從索引中獲取所需的數據,而無需訪問實際的文檔數據。這種方式可以減少磁盤 I/O 和內存消耗,提高查詢性能。 基本語法 在 MongoDB 中&a…

SQL練習題:2.4

建表 # 學生表 create table t_student (stu_id varchar(10),stu_name varchar(10),stu_age datetime,stu_sex varchar(10) );# 課程表 create table t_t_course (c_id varchar(10),c_name varchar(10),c_teaid varchar(10) );# 教師表 create table t_t_teacher (tea…

光速入門python的OpenCV

前言 歡迎來到我的博客 個人主頁:北嶺敲鍵盤的荒漠貓-CSDN博客 本文整理python的OpenCV模塊的關鍵知識點 爭取用最短的時間入門OpenCV 并且做到筆記功能直接復制使用 OpenCV簡介 不浪費時間的介紹: 就是類似于ps操作圖片。 至于為什么不直接用ps,因為只有程序能…

【找出滿足差值條件的下標 I】python

目錄 暴力題解 優化:滑動窗口維護大小值 暴力題解 class Solution:def findIndices(self, nums: List[int], indexDifference: int, valueDifference: int) -> List[int]:nlen(nums)for i in range(n):for j in range(n-1,-1,-1):if abs(i-j)>indexDiffere…

海康威視NVR通過ehome協議接入視頻監控平臺,視頻瀏覽顯示3011超時錯誤的問題解決,即:The request timeout! 【3011】

目錄 一、問題描述 二、問題分析 2.1 初步分析 2.2 查看日志 2.3 問題驗證 1、查看防火墻 2、查看安全組 3、問題原因 三、問題解決 3.1 防火墻開放相關端口 3.2 安全組增加規則 3.3 測試 1、TCP端口能夠聯通的情況 2、TCP端口不能夠聯通的情況 四、驗證 五、云…

「51媒體」如何與媒體建立良好關系?

傳媒如春雨,潤物細無聲,大家好,我是51媒體網胡老師。 與媒體建立良好關系對于企業或個人來說都是一項重要的公關活動。 了解媒體:研究媒體和記者的興趣,提供相關且有價值的信息。 建立聯系:通過專業的方式…

牛客NC324 下一個更大的數(三)【中等 雙指針 Java/Go/PHP/C++】參考lintcode 52 · 下一個排列

題目 題目鏈接: https://www.nowcoder.com/practice/475da0d4e37a481bacf9a09b5a059199 思路 第一步:獲取數字上每一個數,組成數組arr 第二步:利用“下一個排列” 問題解題方法來繼續作答,步驟:利用lintc…

C++進階之路:何為拷貝構造函數,深入理解淺拷貝與深拷貝(類與對象_中篇)

?? 歡迎大家來訪Srlua的博文(づ ̄3 ̄)づ╭?~?? 🌟🌟 歡迎各位親愛的讀者,感謝你們抽出寶貴的時間來閱讀我的文章。 我是Srlua小謝,在這里我會分享我的知識和經驗。&am…

PostgreSQL基礎(三):PostgreSQL的基礎操作

文章目錄 PostgreSQL的基礎操作 一、用戶操作 二、權限操作 三、操作任務

DRM驅動(五)之drm_atomic_state

上節講到《DRM驅動(四)之ADD_FB》調用drmModeAddFB創建drm_framebuffer。然后通過 drmIoctl(fd, DRM_IOCTL_MODE_MAP_DUMB, &map); vaddr mmap(0, create.size, PROT_READ | PROT_WRITE,MAP_SHARED, fd, map.offset); 將物理地址map到用戶空間后…

Python中list遍歷的幾種方式之沒有好與不好,只有合適不合適

Python中list遍歷的幾種方式 引言 Python是一種動態、解釋型的高級編程語言,以其簡潔、易讀的語法而廣受歡迎。在Python中,list是一種非常重要的數據結構,它允許存儲一系列的元素,這些元素可以是任何類型。遍歷list是處理數據的…

nginx的Connection refused

問題描述 nginx的錯誤日志中突然出現大量的的Connection refused問題,日志如下: 2020/03/19 09:52:53 [error] 20117#20117: *7403411764 connect() failed (111: Connection refused) while connecting to upstream, client: xxx.xxx.xxx.xxx, server:…

解決CLion調試時無法顯示變量值的問題

1 問題描述 使用CLion的時候,調試時無法顯示變量的值,例如: 圖來自StackOverflow。 2 解決辦法 可以嘗試切換調試器解決,在Linux下,CLion支持GDB和LLDB,如果GDB不行,可以切換到LLDB。 切換方…

醫院信息化IT監控一體化運維實踐

作者: 曉風 在醫療信息化日益發展的今天,醫院數據中心的運維工作顯得尤為重要。為了確保醫療系統的穩定運行,保障患者數據的安全與完整,我院在信息化IT監控一體化運維方面進行了深入的探索和實踐。 一、背景與挑戰 我院的機房設備規模已有50…

主動歸檔存儲的策略研討

在媒體與娛樂(M&E)行業中,主動存檔策略對于應對內容的持續需求增長、控制存儲成本膨脹以及實現檔案內容的貨幣化至關重要。以下是對此策略的深入分析: ### 持續的內容需求帶來的挑戰 M&E企業面臨著巨大的挑戰&#xff1…

【Spring】SSM整合_入門代碼實現

1. Maven依賴 在pom.xml中添加SSM框架的依賴 <!-- Spring Core --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.x</version> </dependency>…

軟件杯 題目: 基于深度學習的疲勞駕駛檢測 深度學習

文章目錄 0 前言1 課題背景2 實現目標3 當前市面上疲勞駕駛檢測的方法4 相關數據集5 基于頭部姿態的駕駛疲勞檢測5.1 如何確定疲勞狀態5.2 算法步驟5.3 打瞌睡判斷 6 基于CNN與SVM的疲勞檢測方法6.1 網絡結構6.2 疲勞圖像分類訓練6.3 訓練結果 7 最后 0 前言 &#x1f525; 優…