Macro DOMAIN
in matematica.h si scontra con enumerazioni e possibilmente con altri tipi. Non so cosa farmene.math.h macro collisioni
#include <algorithm>
enum Type { DOMAIN };
int main(){
Type t = Type::DOMAIN;
return 0;
}
Compilare con flag -std = C++ 11. La versione C99 di questo codice viene compilato perfettamente bene però:
#include <algorithm>
enum Type { DOMAIN };
int main(){
Type t = DOMAIN;
return 0;
}
Ho controllato il codice sorgente e la biblioteca è da biasimare. algoritmo include stl_algo.h, in cui v'è ifdef:
#if __cplusplus >= 201103L
#include <random> // for std::uniform_int_distribution
#include <functional> // for std::bind
#endif
Il seguente codice compila bene su C++ 11 compilatore:
#include <random>
#include <iostream>
int main(){
std::cout << DOMAIN << std::endl;
return 0;
}
Si tratta di una caratteristica o un bug?
EDIT * fix sporca:
#ifdef DOMAIN
#undef DOMAIN
#endif
La macro 'DOMAIN'? Da dove viene questo? Non riesco a trovarlo né in C++ 1z né in bozze C11 .. – dyp
Huh. Sembra essere correlato alla funzione 'matherr' di System V Unix, non a C né a C++. La macro '__USE_MISC' è impostata (vedere' features.h' di glibc); altrimenti 'math.h' non definirebbe la macro' DOMAIN'. Potrebbe essere possibile accedere alla modalità '_ISOC11_SOURCE' per disattivare' _DEFAULT_SOURCE' per eliminare '__USE_MISC'. - Modifica: ... sembra essere più complicato di quello – dyp