Я хочу спокойно без лишних велосипедов конвертировать строки в числа и обратно.
Для этого я пишу оболочки для стандартной
atof(char*)
из stdlib.h и нестандартной функции, расширения gcc,
itoa(int, char*, int)
из того же stdlib.h
С первой функцией проблем не возникло, а вот со второй пришлось поломать голову.
Вот рабочий пример на C++:
#include <iostream>
#include <cstdlib>
int GetInt( const int &number )
{
char *result;
return itoa(number, result, 10);
}
int main()
{
std::cout << GetInt( 475); // Все прекрасно работает
}
Но вот подвох - так как функция нестандартная, она просто не будет подключаться если компилировать код c -c++11 или -c++14 .
Возиться с макросами неохота, да и нехорошо, поэтому я просто добавляю в проект файл Numbers.c:
// Numbers.c
#include <stdlib.h>
int GetInt(const int number)
{
char *result;
return itoa(number, result, 10);
}
Так как теперь это сишный код, то проблемы с включением itoa теперь быть не должно, и проект можно компилировать с -c++14
Правим main.cpp:
#include <iostream>
extern "C" int GetInt(const int);
int main()
{
std::cout << GetInt( 475);
// Компилируется, но при запуске сразу вылетает
}
Почему все вылетает?