Che cosa significa “Attenzione: il ritorno rende intero da puntatore senza un cast” significa in C?

StackOverflow https://stackoverflow.com/questions/788752

Domanda

Sto scrivendo una semplice funzione in C il cui scopo è quello di prendere un numero a 6 bit, elaborare i primi 3 bit, e sulla base di questo, restituire una "r", "w" o "o".

Tuttavia, quando compilo ricevo questo avvertimento: 'ritorno rende intero da puntatore senza un cast'. Poi, quando ho eseguito il programma, trovo che la funzione restituisce un personaggio strano che sicuramente non è uno dei tre che sto cercando.

Che cosa sta succedendo qui? Grazie in anticipo.

Ecco la mia funzione:

char
readorwrite(int opcode)
{
    if (opcode >> 3 == 4) {
        return "r";
    } else if (opcode >> 3 == 5) {
        return "w";
    } else {
        return "o";
    }
}
È stato utile?

Soluzione

Il problema è che "r", "w" e "o" sono costanti stringa, il che significa che il loro tipo effettivo è char [] o char *. Ciò significa che la funzione è in realtà tornando puntatore s in una stringa terminata da zero. Per singoli caratteri, si consiglia di utilizzare 'r', 'w', e 'o' invece.

Altri suggerimenti

Si ritorna un const char *, vale a dire un puntatore a una locazione di memoria in cui la stringa "o" viene memorizzato quando si dovrebbe essere restituisce un char 'o'

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top