Solo curioso se u_char è uno standard. L'ho sempre usato assumendo che fosse definito insieme ai tipi uintX_t e così via. Ma sto vedendo alcuni dei nostri codici di transizione da u_char a "unsigned char" con un motivo "quindi gli utenti non devono definire u_char" ..È u_char uno standard?
risposta
Non è presente in alcun file di intestazione precedente (tranne alcune aree specifiche , come Kerberos e intestazioni di rete), e non un tipo predefinito in alcun compilatore che conosca.
La stringa u_char
non appare in questa bozza dello standard C:
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
Non è richiesto da POSIX sia, per quanto ne so.
Penso che sia in BSD (sys/types.h) e Windows (winsock.h). Non considererei uno dei due uno "standard" - non sono standard formali, e certamente non fanno parte dello standard C, ma sono chiaramente definiti e documentati.
Inoltre, il problema di utilizzare questi tipi non standard non validi è che devi essere molto attento a definirli. Alcuni sistemi li hanno già definiti (che è sbagliato), portando a errori se li definisci tu stesso, ma altri no, il che significa che non puoi usare il tipo a meno che tu non lo definisca da solo. Il modo più sicuro è non usare la posta indesiderata come questa, non essere pigro e scrivere "char unsigned" quando lo intendi. –
@R .. oppure usare '
@JonathonReinhart: l'uso di 'uint8_t' ha in effetti un'asserzione incorporata che' CHAR_BIT == 8', poiché il tipo è proibito esistere se 'CHAR_BIT> 8'. Va bene se vuoi un tipo a 8 bit, ma se quello che intendi è "un tipo intero senza segno che occupa un'unità di archiviazione in questa implementazione, qualunque cosa possa essere", allora dovresti dire: "unsigned char". –
No, u_char
non standard. Se è necessario utilizzare un tipo standard equivalente a u_char
, è possibile utilizzare uint8_t
che fa parte della libreria standard C99 (controllare le piattaforme/compilatori specifici per conformità C99). stdint.h
definisce questo tipo (insieme a molti altri tipi integrali specifici). This Wikipedia article contains more information about stdint.h
.
- 1. Perché jQuery non è uno standard W3C?
- 2. È sicuro utilizzare le specifiche tecniche C++ approvate per uno standard futuro in uno standard precedente?
- 3. WADL è uno standard per le applicazioni REST?
- 4. Scrittura simultanea su uno standard OutputStream
- 5. La libreria standard Python è veramente standard?
- 6. Bash: standard input in modo dinamico in uno script
- 7. Come standard è std :: thread?
- 8. Esiste uno standard che regola i cookie __utma, __utmz, ecc.?
- 9. Esiste uno stile standard per la documentazione in PHP?
- 10. Implementazione di uno standard di denominazione per chiavi, indici, vincoli
- 11. Esiste uno standard PHPCS per il targeting di docblock PHP?
- 12. Definendo il tipo di argomento della funzione dopo ")", è uno standard molto vecchio?
- 13. Il tema bianco e nero per i codici QR è uno standard?
- 14. Che cosa è equivalente alla funzione Nz in MS Access in MySQL? Nz è uno standard SQL?
- 15. Questo codice è garantito dallo standard C?
- 16. Qual è lo spazio dei nomi 'Standard'?
- 17. È parte alloca dello standard C++?
- 18. L'ordine di inizializzazione è garantito dallo standard?
- 19. Qual è il colore blu Apple standard?
- 20. Questa dichiarazione enum è conforme allo standard?
- 21. L'appChecker Linux Standard Base (LSB) è affidabile?
- 22. Come verificare se uno stdout è chiusa
- 23. Qual è lo standard per la codifica delle immagini Docker?
- 24. È stato svuotato uno shared-from shared_ptr?
- 25. Qual è lo strumento di generazione standard in Erlang?
- 26. Libreria standard .NET rispetto allo standard .NET
- 27. Standard per Clojure?
- 28. Qual è lo standard con oAuth per ricordare gli utenti?
- 29. Qual è il formato standard per le espressioni di assegnazione?
- 30. Standard per typedef'ing
u_char non fa parte dello standard ANSI C ufficiale –