Nested Functions in C
In the context of C , the question arises whether functions can be defined within other functions.
Modern C
In C 11 and later versions (C 14, C 17), nested functions are possible through the use of lambda expressions. Lambdas can be defined within functions and behave like anonymous functions:
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 and C 03
In C 98 and C 03, nested functions are not directly supported. However, a similar effect can be achieved through the use of local classes with static member functions:
int main() { struct X { static void a() {} }; X::a(); return 0; }
While this approach provides a semblance of nested functions, it is not as straightforward as using lambdas in modern C .
The above is the detailed content of Can C Functions Be Nested, and How Has This Evolved Across Different Standards?. For more information, please follow other related articles on the PHP Chinese website!