E 'una cattiva forma usare le caratteristiche di C come il tipo size_t invece delle loro controparti c ++, come std :: size_t?

4

Mi è stato recentemente detto che l'utilizzo di size_t come dichiarato nello spazio dei nomi globale non è corretto in C ++, apparentemente perché size_t è una caratteristica C. Ho esaminato questo aspetto e ho trovato questa domanda su Stack Overflow:

link

La risposta in alto rende abbastanza chiaro che non c'è alcuna differenza reale tra size_t e std::size_t , ma ciò lascia aperta la questione dello stile e della correttezza.

Dato che sto programmando in C ++, è "sbagliato" usare una caratteristica C come size_t al posto del% più piccolo, ma non meglio, del C ++ std::size_t ?

    
posta quant 15.07.2014 - 01:06
fonte

1 risposta

5

<stddef.h> è un file di intestazione standard al 100% in C ++, che fornisce il tipo ::size_t .

Come bonus è anche standard in C. Molto bello se stai scrivendo un file di intestazione per una libreria con un'interfaccia compatibile con C, usando #if __cplusplus / extern "C" { .

Si noti che i soliti argomenti su spazi dei nomi e conflitti di denominazione non si applicano, in quanto lo standard consente l'inclusione di uno o tutti i file di intestazione per introdurre ::size_t .

L'unica volta che l'utilizzo di std::size_t è "migliore" di ::size_t è se non hai incluso <stddef.h> (forse hai #include <cstddef> invece).

    
risposta data 15.07.2014 - 01:34
fonte

Leggi altre domande sui tag