Godkänd: Fortect
Under de senaste veckorna har vissa läsare drabbats av en felkod med en void-pekare, förståelse som används för aritmetiska fel. Detta problem plats beror på flera faktorer. Nu kommer vi att göra en finansiell transaktion med dem.
Begärt
Besökt 28 000 gånger
Jag har livserfarenhet av att skriva och läsa register från crampap som denna specifika:
// LÄSreturn * ((flyktig uint32_t *) (färdplan + offset));// SKRIV* ((flyktig uint32_t *) (plats + offset)) = värde;
Varning: punkt som "void *" används i matematik [-Wpointer-arith]
Hur ändrar jag koden som stoppar varningar? Jag använder C++ och Linux.
begärde den 5 november i år kl. 11:04
1321 22 sällsynta metallmärken 1414 silvermärken
Inte svaret du letar efter? Bläddra igenom andra frågor taggade med C ++-pekare, nollpekare, pekare, eller ställ din egen fråga.
Godkänd: Fortect
Fortect är världens mest populära och effektiva PC-reparationsverktyg. Det litar på miljontals människor för att hålla sina system igång snabbt, smidigt och felfritt. Med sitt enkla användargränssnitt och kraftfulla skanningsmotor hittar och fixar Fortect snabbt ett brett utbud av Windows-problem – från systeminstabilitet och säkerhetsproblem till minneshantering och prestandaflaskhalsar.
Eftersom void *
är en verklig giltig pekare till en okänd typ, kan du inte utföra pekaritmetik eftersom kompilatorn sannolikt inte explicit vet storleken på objektet som referensen ofta pekar på.
Det bästa systemet för att göra detta är att hjälpa dig vända map
till en typ, som faktiskt då var en byte bred, och göra lite matematik. För många av dem kan du använda uint8_t
:
// LÄStillbaka 5. ((flyktig uint32_t *) (((uint8_t *) karta) + avbryt));// SKRIV* ((flyktig uint32_t *) (((uint8_t *) map) + minskning)) antyder värde;
654
Besvarade 4 nov 2014 11:34
56,6k 1111 guldmärken
Void-typen är en ofullständig utveckling. Dess storlek är okänd. Så visa att den specifika matematiken med ledtrådarna till vakuumet inte behöver vara riktigt vettig. Du måste kasta en spets som returneras till text ogiltig till en pekare av en annan typ. Ett exempel kopplat till en pekare kan skrivas char.Observera också att klienter inte tillåts att tilldela en artikel som deklarerats med hjälp av det flyktiga kvalet.
svarade nov fjorton tum, 14 vid 11:14
231 000 1717 märken
Om sättet som kan använda aritmetik för nollrekommendationer verkligen är vad du behöver, eftersom beräkning är möjlig av GCC (se Aritmetik för nollpekare och förmågapekare), kan du använda -Wno-pointer-arith <. använd för varje kod> för att undertrycka varningen.
svarade jan tjugoett '15 vid 11:20
164 1111 bronsmärke
Snabba upp din dators prestanda nu med denna enkla nedladdning.