История изменений
Исправление KennyMinigun, (текущая версия) :
size_t get_and_return_string(char **out); char *str = NULL; size_t sz = get_and_return_string(&str);
И что потом делать со строкой? free? А вдруг она статическая? А если статическая и дёрнуть get_and_return_string еще раз — str вдруг поменяется.
Да, но это сколько мороки на ровном месте. А ведь с использванием stl это как «два байта об асфальт»:
// in-place
std::string& getAndReturnString(std::string &str);
// copy
std::string getAndReturnString(const std::string &str);
// и вообще: задача была только вернуть строку
std::string mkstring();
И тут же получаем умный контейнер «искаропки», а на С для «образумливания» наверняка бы структура понадобилась. Да и с выделением памяти морока.
Исправление KennyMinigun, :
size_t get_and_return_string(char **out); char *str = NULL; size_t sz = get_and_return_string(&str);
И что потом делать со строкой? free? А вдруг она статическая? А если статическая и дёрнуть get_and_return_string еще раз — str вдруг поменяется.
Да, но это сколько мороки на ровном месте. А ведь с использванием stl это как «два байта об асфальт»:
// in-place
std::string& getAndReturnString(std::string &str);
// copy
std::string getAndReturnString(const std::string &str);
// и вообще: задача была только вернуть строку
std::string mkstring();
И тут же получаем умный контейнер с плюшками типа .size()
«искаропки», а на С для этого бы структура понадобилась. Да и с выделением памяти морока.
Исходная версия KennyMinigun, :
size_t get_and_return_string(char **out);
char *str = NULL;
size_t sz = get_and_return_string(&str);
И что потом делать со строкой? free? А вдруг она статическая? А если статическая и дёрнуть get_and_return_string еще раз — str вдруг поменяется.
Да, но это сколько мороки на ровном месте. А ведь с использванием stl это как «два байта об асфальт»:
// in-place
std::string& getAndReturnString(std::string &str);
// copy
std::string getAndReturnString(const std::string &str);
// и вообще: задача была только вернуть строку
std::string mkstring();
И тут же получаем умный контейнер с плюшками типа .size()
«искаропки», а на С для этого бы структура понадобилась. Да и с выделением памяти морока.