При переходе данный код заголовка перестал работать
#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
.
Проблема вроде как очевидна - объявление в глобальном пространстве символов с именем, уже используемым в бибилиотечном коде. Добавляйте новый символы в собственное пространство имен с уникальным именем, ну или используйте уникальные имена при добавлении в глобальное пространство имен.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Что такое Array of Structure, Structure of Array, Structure of Structure ? Когда использовать?
Проблема в приведении типов при попытке написать код для WinAPIПрограмма простенькая, для вывода таблицы умножения
Дана строка, состоящая из символов латинского алфавита, разделенных пробелами (одним или несколькими)Определить количество слов, которые...