c中有沒有區域性函式?

時間 2021-05-30 21:05:51

1樓:「已登出」

我理解的區域性函式是指在乙個函式內部定義的函式,那麼這樣的函式在C語言裡應該是沒有的,

如果你說的區域性函式是指只能在乙個檔案中被呼叫的函式,那麼static函式在C語言是區域性函式。

在C++11等更新的標準中,可以在函式內部定義lamda表示式,來實現在乙個函式內部定義另乙個函式並呼叫的功能。

個人理解,僅供參考。

2樓:Certain Y

gcc編譯器支援區域性函式,但是只對於C語言支援,不支援C++。例子:

/* main.c */

#include

intmain

(void

)hello

();return0;

}% clang main.c

main.c:4:20: error: function definition is not allowed here

void hello(voidmain.c:7:

3: warning: implicit declaration of function 'hello' is invalid in

C99 [-Wimplicit-function-declaration]

hello();

^1 warning and 1 error generated.

compiler exit status 1% gcc main.c

% ./a.out

Hello World

3樓:曾璽文

我仔細想了想,大概物件導向程式設計裡封裝到類裡面的函式可以算是「區域性函式」,畢竟只在類或者物件中發揮作用。

當然這就不是面向過程的C語言的特性了,才疏學淺,真還想不到C語言中任何「區域性函式」特性,畢竟我記得C語言不支援函式內定義函式,也不允許結構體內定義函式吧。

C語言有沒有簡單的方法,能讓函式中執行return之後,再次再執行另外一段命令?

典型的AOP操作。比較有共識的實現方式是函式巢狀來實現,就是外函式做你說的那些額外功能,內函式實現主要的計算邏輯。當然c的話還可以用巨集等奇技淫巧。但是你說簡單的話那估計不行 gcc 可以用 attribute cleanup fn int var 實現。這個類似於給 var 加了個析構函式 fn。...

c 函式區域性靜態變數第二次被訪問的時候具體做了些什麼?

Atlantis 別的不知道用g 測試了一下單例標記 雙檢測鎖,只是加乙個bool標記是否初始化的話,如果在建構函式裡加個sleep,還是還是會出問題.include include using namespace std class A A singleon void do something i...

為什麼C 中沒有階乘函式?

呂不鬧 如果只是問為什麼,那麼答案應該是 委員會那些老學究不允許太多無關緊要的功能進入標準。可能他們覺得 CPPer 都能自己寫出來吧。 簡易版 include include include include include using namespace std intmain O 1 版 inc...