При переходе данный код заголовка перестал работать
#include<iostream>
#include<cmath>
#include<limits>
const double _infinity=
std::numeric_limits<double>::infinity();
const double pi= 4.*std::atan(1.);
const double e = std::exp(1.);
inline double display(double x){
std::cout.precision(16);
std::cout<<x;return 0;}
inline double display(int x){
std::cout<<x;return 0;}
inline double display(char x){
std::cout<<x;return 0;}
inline double display(const char* x){
std::cout<<x;return 0;}
inline double display(bool x){
std::cout<<'#'<<(x ? 't' : 'f');return 0;}
inline double newline(){
std::cout<< std::endl;return 0;}
inline double remainder(double x, double y)
{ return std::fmod(x, y);}
inline double quotient(double x, double y)
{ return std::floor(x / y);}
inline double expt(double x, double y)
{ return std::pow(x, y);}
inline double abs(double x) { return std::fabs(x);}
using std::sin;using std::cos;
using std::tan;using std::exp;
using std::log;using std::atan;
using std::sqrt;
Ошибки:
Ошибка C2382 abs: переопределение; разные спецификации исключений
Предупреждение C28251 Несогласованная аннотация для "remainder": данный экземпляр содержит нет аннотаций. См. c:\program files (x86)\windows kits\10\include\10.0.17763.0\ucrt\corecrt_math.h(530). Примечание. Для данной функции имеется несколько прототипов. Это предупреждение сравнивает первый прототип с номером экземпляра 3. lb1 c:\users\bbcca\onedrive\рабочий стол\microlisp\lb1\mlisp.h 22
Название вашей функции remainder совпадает с std::remainder из <cmath>.
Обычно это не проблема, ведь пространства имен разные, но судя по https://en.cppreference.com/w/cpp/header#C_compatibility_headers
... cxxx headers are allowed to also declare the same names in the global namespace ...
хедерам вида c___ (оставшимся от С) разрешается все свое содержимое, в дополнение к namespace std, объявлять также в глобальном пространстве имен.
Это здесь и происходит, std::remainder объявляется еще и как просто remainder.
Ничего не поделаешь, переименовывайте свою функцию. Или убирайте в namespace.
Проблема вроде как очевидна - объявление в глобальном пространстве символов с именем, уже используемым в бибилиотечном коде. Добавляйте новый символы в собственное пространство имен с уникальным именем, ну или используйте уникальные имена при добавлении в глобальное пространство имен.
Продвижение своими сайтами как стратегия роста и независимости