1. 程式人生 > 其它 >c語言extern_C語言中#if,#if defined ,#ifdef,extern的用法描述

c語言extern_C語言中#if,#if defined ,#ifdef,extern的用法描述

技術標籤:c語言extern

28770dd410fa2e79a55f02543079499c.png

本文來自網路,如有侵權請聯絡刪除,謝謝!

1、#if 和#ifdef

當asd_eee表示式存在而且,值為ture的時候接續向下執行

例如

#define TARGET_LITTLE_ENDINA 1#define TARGET_BIG_ENDINA   0#ifdef TARGET_LITTLE_ENDINAcall little endina function#elsecall big endina function#endif

上面的今天寫的程式碼,發現我不管把TARGET_LITTLE_ENDINA和TARGET_BIG_ENDINA定義成0或者1,呼叫的都是little endina函式,一直找不到問題所在,看看程式碼也沒有什麼問題。經過分析和查詢相關的文件,原來是自己沒有理解#if和#ifdef之間的區別。對於#if需要是一個表示式,如果表示式為1則呼叫#if下面的程式碼。

對於#ifdef需要的只是這個值有沒有定義,並不關心這個值是什麼。
表明之間的區別問題就變得非常的容易,只要把上述程式碼中的#ifdef改成#if就可以達到目的。

2 ,#if defined

,#if defined 的意思是是是否對某一個表示式進行了定義

例如

#if defined(_WIN32) || defined(WIN32)# include #else........

例如上面這段程式碼,如果既沒有定義_WIN32也沒有定義WIN32,那麼include標頭檔案 io.h

3 extern

1.extern用在變數宣告中常常有這樣一個作用,你在*.c檔案中聲明瞭一個全域性的變數,這個全域性的變數如果要被引用,就放在*.h中並用extern來宣告。

2.如果函式的宣告中帶有關鍵字extern,僅僅是暗示這個函式可能在別的原始檔裡定義,沒有其它作用。即下述兩個函式宣告沒有區別:
extern int f(); 和int f();
=================================如果定義函式的c/cpp檔案在對應的標頭檔案中聲明瞭定義的函式,那麼在其他c/cpp檔案中要使用這些函式,只需要包含這個標頭檔案即可。
如果你不想包含標頭檔案,那麼在c/cpp中宣告該函式。一般來說,宣告定義在本檔案的函式不用“extern”,宣告定義在其他檔案中的函式用“extern”,這樣在本檔案中呼叫別的檔案定義的函式就不用包含標頭檔案
include “*.h”來宣告函式,聲明後直接使用即可。
=================================
舉個例子:
//extern.cpp內容如下:

// extern.cpp : Defines the entry point for the console application.//#include "stdafx.h"extern print(char *p);int main(int argc, char* argv[]){char *p="hello world!";print(p);return 0;}//print.cpp內容如下#include "stdafx.h"#include "stdio.h"print(char *s){printf("The string is %s/n",s);}

結果程式可以正常執行,輸出結果。如果把“extern”去掉,程式依然可以正常執行。
由此可見,“extern”在函式宣告中可有可無,只是用來標誌該函式在本檔案中定義,還是在別的檔案中定義。只要你函式在使用之前聲明瞭,那麼就可以不用包含標頭檔案了。

精選文章

圍觀

5a2d65d06716317dc6fcf225684ca2f0.gif更新一波資源,請快速領取!

熱文

超級乾貨:Linux常用命令 & 實用命令萬字總結!

熱文

檔案操作之fprintf和fscanf函式

熱文

計算機網路基礎知識總結

熱文

C/C++學習筆記——C提高:指標強化

END

如果您覺得本篇文章對您有幫助請轉發給更多的人

順手點一下“在看”也是對小編最大的支援

465a126e96145c25f2fff8761684d81a.png