C 中的巢狀函數
在 C 的上下文中,出現了函數是否可以在其他函數中定義的問題。
現代C
C 語言在C.11 及更高版本(C 14、C 17)中,可以透過使用lambda 表達式來實現巢狀函數。 Lambda 可以在函數內定義,其行為類似匿名函數:
int main() { auto print_message = [](std::string message) { std::cout << message << "\n"; }; for (int i = 0; i < 10; i++) { print_message("Hello!"); } return 0; }
C 98 和C 03
在C 98 和C 03 中,嵌套函數不直接支援。然而,透過使用具有靜態成員函數的局部類別可以實現類似的效果:
int main() { struct X { static void a() {} }; X::a(); return 0; }
雖然這種方法提供了嵌套函數的外觀,但它並不像在現代C 中使用lambda 那樣簡單。
以上是C 函數可以巢狀嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!