當前位置:編程學習大全網 - 編程軟體 - C語言可不可以重載?

C語言可不可以重載?

1.從C語言的語法設計來說是不支持的,早期的C編譯器未考慮過函數重載這壹功能,所以就會有那麽多類似的函數abs,labs,fabs等等(每種類型都要考慮壹個不同的函數名)。\x0d\2.C語言標準就規定不允許同壹作用域中兩個函數重名。和C語言相關的域有兩種,壹個是給編譯器看得,還有壹種是給鏈接器看的,而給編譯器看的這種域主要是關於\x0d\變量的可見範圍,而鏈接器看到的那個是叫文件域,而全局域可能要跨越好幾個文件域,這樣只要兩個同名函數用static修飾,並且在不同的文件中,就不會\x0d\沖突。不過這個實際上已經超越了編譯器的範圍,表面看起來兩個函數同名,但是實際上編譯器為鏈接器產生是指向的同壹個函數地址。 \x0d\3.函數重載是壹個編譯期行為,主要是通過name mangling來產生不同的匯編符號,讓linker可以正確的link代碼。\x0d\4.但是,C語言作為壹個具有超強功能的底層語言,是有辦法進行模擬函數重載的。那就是函數指針。最簡單的例子就是qsort函數。這個函數可以傳遞壹個函數指針變量,通過不同的函數指針,可以對不同的數據類型就行相同的qsort操作,從某種層面來說相當於函數重載。

  • 上一篇:關於P80C321這個芯片,請細說壹下
  • 下一篇:MATLAB是幹什麽用的在自動化控制中應用於什麽地方
  • copyright 2024編程學習大全網