c語言extern_C語言中#if,#if defined ,#ifdef,extern的用法描述
阿新 • • 發佈:2021-01-25
技術標籤:c語言extern
本文來自網路,如有侵權請聯絡刪除,謝謝!
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改成#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來宣告。
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”在函式宣告中可有可無,只是用來標誌該函式在本檔案中定義,還是在別的檔案中定義。只要你函式在使用之前聲明瞭,那麼就可以不用包含標頭檔案了。
精選文章
圍觀
更新一波資源,請快速領取!
熱文
超級乾貨:Linux常用命令 & 實用命令萬字總結!
熱文
檔案操作之fprintf和fscanf函式
熱文
計算機網路基礎知識總結
熱文
C/C++學習筆記——C提高:指標強化
【END】
如果您覺得本篇文章對您有幫助請轉發給更多的人
順手點一下“在看”也是對小編最大的支援