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...