Если применять компилятор из семейства GCC, то примерно так: Код (C++): int main(void) { printf("!!!Hello World!!!\n"); /* prints !!!Hello World!!! */ int func(int i) { return i + 2; } printf("func: %d\n", func(4)); return EXIT_SUCCESS; }
С помощью классов и функций, которые что-то возвращают, можно делать что-то похожее. С виду похоже на вызов функции из функции. Код (C++): #include <iostream> using namespace std; class a { public: int func1(int i) { return i + 2; } }; a func2() { a var; return var; } int main() { cout << func2().func1(5) << endl; return 0; }
Что-то не собирается так в GCC. Как у Вас собралось, интересно? В питоне так можно делать, но я не вижу практического применения в этом. Разве что для лучшей читаемости кода. Меня так наоборот путает.
Дело в том, что стандарт языка 'C' допускает определение функций только в контексте файлов, а не пространств имён. А GCC (впрочем, как и некоторые другие компиляторы) нарушает некоторые требования стандарта языка 'C'. Но, вполне вероятно, что эти "нарушения" зависят от версии компилятора. Приведённый мною код компилируется версией 9.4 из штатного пакета Ubuntu.