Dashia18 / Simple_fraction_class

Class of simple fraction
0 stars 0 forks source link

Compatibility with standard #5

Closed sergregory closed 9 years ago

sergregory commented 9 years ago

abs function is specified in header <cstdlib> for int/long/etc and in header <cmath> for float and double. In both cases it is wrapped into the namespace std. MSVS allows to use this function just by including <math.h> header, but more correct way is to include one of <cstdlib> or <cmath> (these a c++ names for c headers stdlib.h and math.h, correspondingly) and call this function as std::abs or use using namespace std directive. cppreference.com: abs(int) cppreference.com: abs(float)

P.S. on linux I just can't build the project without these modifications...

Dashia18 commented 9 years ago

То есть лучше писать для математических функций, например таких как модуль abs, заголовочный файл, например, (для float и double) или (int/long/etc). Иначе не везде работает. А если использовать одну из этих для всех типов?

sergregory commented 9 years ago

Ну нужно подключать заголовочный файл где объявлены эти функции.. Просто студия и так компилирует, но вообще говоря не должна, а если подключишь то везде будет работать.

В принципе да, можно подключить только тот, где объявлены эти функции для типов с плавающей точкой, но тогда если ты будет в функцию передавать int и результат присваивать инту, компилятор будет выдавать предупреждение что ты сужаешь тип переменной.

Dashia18 commented 9 years ago

В общем я поняла, что бы не было предупреждений, надо использовать для каждого типа свою библиотеку. Просто иногда сложно запомнить какую нужную для каждого типа. Я думала для таких функций math.h достаточно.

sergregory commented 9 years ago

Я тоже думал её достаточно, но вот оказалось что нет) сам из интернета узнал