Jakie problemy można napotkać podczas definiowania NOMINMAX
przed czymkolwiek innym w moim programie?Możliwe problemy z NOMINMAX w Visual C++
Z tego, co wiem, spowoduje to, że <Windows.h>
nie zdefiniuje makr typu min
i max
w taki sposób, że wiele konfliktów ze STL, np. std::min()
, std::max()
lub std::numeric_limits<T>::min()
zostały rozwiązane.
Czy mam rację, zakładając, że tylko specyficzny dla systemu Windows i starszy kod będą mieć problemy? Prawie wszystkie biblioteki nie powinny być zależne od min()
i max()
zdefiniowanych jako makra?
Edycja: Czy wystąpią problemy z innymi nagłówkami systemu Windows?
nie powinno być problemów, nawet z Windows konkretnego kodu, ale jest to możliwe że istnieje jakiś kod, który nie działa. Dlaczego nie spróbujesz i zobaczysz, czy są jakieś błędy? –
Dla naszego wewnętrznego kodu, 'NOMINMAX' działa dobrze. Jednak biblioteka jest również używana przez zewnętrznych programistów i nie chcę łamać ich aplikacji. – Manuel
'# define' jest operacją w czasie kompilacji. Biblioteki są połączone, a nie kompilowane. Oznacza to, że mogą mieć własne niezależne '# define's. Użytkownicy bibliotek nie zobaczą, że '# define'd' NOMINMAX' – MSalters