2009-06-12 8 views

risposta

40

__STDC_LIMIT_MACROS e __STDC_CONSTANT_MACROS sono una soluzione alternativa per consentire ai programmi C++ di utilizzare i macro stdint.h specificati nello standard C99 che non sono nello standard C++. Le macro, ad esempio UINT8_MAX, INT64_MIN e INT32_C() possono essere già definite in applicazioni C++ in altri modi. Per consentire all'utente di decidere se desiderano i macro definiti come C99, molte implementazioni richiedono che __STDC_LIMIT_MACROS e __STDC_CONSTANT_MACROS siano definiti prima che sia incluso stdint.h.

Questo non fa parte dello standard C++, ma è stato adottato da più di un'implementazione.

+1

che mi colpisce come un precedente denominazione pericoloso. Complicano la vita degli standardizzatori: devono prestare attenzione a ciò che le implementazioni hanno fatto con il loro spazio dei nomi. –

+1

non si applica più a C11 e quindi a C++ 11. – malat

-4

Le macro non fanno parte dello standard C++ e sono probabilmente utilizzate per scopi interni nell'implementazione C++. Se vuoi saperne di più su di loro, dovresti fare una domanda con atag che indichi qual è l'implementazione.

3

In stdint.h in C++, controllano se definire macro come INT32_MAX o INT32_C(v). Vedere le informazioni sulla piattaforma stdint.h per ulteriori informazioni.