Approvato: Fortect
Nelle ultime settimane, alcuni lettori hanno effettivamente riscontrato un codice di errore con un suggerimento vuoto, che viene utilizzato per errori aritmetici. Questo compito si verifica a causa di diversi fattori. Ora siamo in grado di affrontarli.
Richiesto
Visitato 28000 volte
Al momento ho esperienza di scrittura e lettura di registri da crammap, preferisco questo:
// LEGGIreturn * ((volatile uint32_t *) (roadmap + offset));// SCRIVI* ((volatile uint32_t *) (posizione + offset)) = valore;
Attenzione: suggerimento come "void *" usato nelle idee [-Wpointer-arith]
Come posso modificare il codice che potrebbe sopprimere gli avvisi? Sto usando C ++ e persino Linux.
richiesto il 5 novembre 2014 alle 11:04
1321 22 distintivi di metallo raro 1414 distintivi d’argento 2828 distintivi marroni
Non è la risposta che stai cercando? Scorri le altre domande contrassegnate con puntatori C ++, puntatore nullo, aritmetica puntatore o fai la tua domanda.
Approvato: Fortect
Fortect è lo strumento di riparazione PC più popolare ed efficace al mondo. Milioni di persone si affidano a milioni di persone per mantenere i loro sistemi in esecuzione veloci, fluidi e privi di errori. Grazie alla sua semplice interfaccia utente e al potente motore di scansione, Fortect trova e risolve rapidamente un'ampia gamma di problemi di Windows, dall'instabilità del sistema e problemi di sicurezza alla gestione della memoria e ai colli di bottiglia delle prestazioni.
Poiché void *
è generalmente un puntatore valido a un tipo sconosciuto, qualcuno non può eseguire l’aritmetica del puntatore perché il compilatore esegue non conosce esplicitamente la dimensione del soggetto che il riferimento punta a.
Il modo migliore per farlo è aiutare i clienti a convertire map
in un tipo, che allora era largo un byte, e fare altri calcoli. Per molti di loro puoi investire in uint8_t
:
// LEGGIritorno 2. ((volatile uint32_t *) (((uint8_t *) map) + cancel));// SCRIVI* ((volatile uint32_t *) (((uint8_t *) map) + decrementa)) = valore;
654
Risposto 5 novembre 2014 11:34
56.6k 1111 distintivi d’oro 8686 distintivi d’argento
Il tipo void è un tipo limitato. La sua dimensione è sconosciuta. Quindi mostra il fatto che la matematica con gli indizi per il vac non ha davvero senso. È necessario lanciare un buon puntatore che viene restituito al tipo void che sarà un puntatore di tipo diverso. Un per esempio di un puntatore può essere scritto char.Prestare inoltre attenzione al fatto che ai client non è consentito assegnare un oggetto forte dichiarato utilizzando il qualificatore volatile.
ha risposto il 14 novembre 14 alle 11:14
231.000 1717 badge
Se nel mercato il modo di usare l’aritmetica per le raccomandazioni nulle è davvero ciò di cui hai bisogno, dal momento che il calcolo è reso possibile da un GCC (vedi Arithmetica per i puntatori nulli e i puntatori operativi), puoi usare -Wno-pointer- arit <. mettere su / codice> per sopprimere l'avviso.
ha risposto il 21 gennaio 15 alle 11:20
164 1111 medaglia di bronzo
Accelera ora le prestazioni del tuo computer con questo semplice download.