Makro DOMAIN
w matematyce.h zderza się z wyliczeniami i ewentualnie innymi typami. Nie wiem, co z tym zrobić.zderzenia makro math.h.
#include <algorithm>
enum Type { DOMAIN };
int main(){
Type t = Type::DOMAIN;
return 0;
}
Skompiluj z flagą -std = C++ 11. Wersja tego kodu C99 kompiluje się doskonale:
#include <algorithm>
enum Type { DOMAIN };
int main(){
Type t = DOMAIN;
return 0;
}
Sprawdziłem kod źródłowy, a biblioteka jest winna. Algorytm obejmuje stl_algo.h, w których istnieje ifdef:
#if __cplusplus >= 201103L
#include <random> // for std::uniform_int_distribution
#include <functional> // for std::bind
#endif
Poniższy kod kompiluje grzywny na 11 kompilatora C++:
#include <random>
#include <iostream>
int main(){
std::cout << DOMAIN << std::endl;
return 0;
}
jest to cecha lub błąd?
EDIT * brudny fix:
#ifdef DOMAIN
#undef DOMAIN
#endif
Makro "DOMAIN"? Skąd to pochodzi? Nie mogę go znaleźć ani w C++ 1z, ani w wersjach C11 .. – dyp
Huh. Wydaje się być związany z 'matherr' funkcji systemu V V, nie C ani C++. Makro '__USE_MISC' jest ustawione (zobacz" features.h "glibc); w przeciwnym razie 'math.h' nie zdefiniowałoby makra' DOMAIN'. Możliwe, że dojdzie do trybu "_ISOC11_SOURCE", aby dezaktywować '_DEFAULT_SOURCE', aby pozbyć się' __USE_MISC'. - Edycja: ... wydaje się być bardziej skomplikowana niż ta – dyp