Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698

    [C] Valore non ammesso in enum

    Sto lavorando con una libreria proprietaria (non ho i sorgenti).
    Naturalmente ho tutti gli header, ed ho una struttura enum che contiene dei codici di errore.

    La struttura contiene 20 campi, il primo inizializzato a 0.
    Perciò mi aspetto che i valori consentiti siano nel range 0-19, invece, a seguito di una chiamata di inizializzazione che mi setta la struttura, ci trovo dentro un 23 che non è associabile a nessun campo.

    Come è possibile?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [C] Valore non ammesso in enum

    Originariamente inviato da Gil Mour
    Sto lavorando con una libreria proprietaria (non ho i sorgenti).
    Naturalmente ho tutti gli header, ed ho una struttura enum che contiene dei codici di errore.

    La struttura contiene 20 campi, il primo inizializzato a 0.
    Perciò mi aspetto che i valori consentiti siano nel range 0-19, invece, a seguito di una chiamata di inizializzazione che mi setta la struttura, ci trovo dentro un 23 che non è associabile a nessun campo.

    Come è possibile?
    In C/C++ una enum consente solo di specificare un elenco di costanti il cui tipo è semplicemente un "intero". Essendo un intero a tutti gli effetti, ad una variabile di tipo enum si può assegnare teoricamente qualunque valore intero.

    Per essere più chiari:

    codice:
    enum prova
    {
        ZERO = 0,
        UNO,
        DUE
    };
    
    enum prova p1 = 4;
    è perfettamente lecito.

    Nel tuo caso, vuol solo dire che l'elenco nella enum non contempla quel valore 23 (probabilmente perché l'elenco non è aggiornato o per altri motivi).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    Beh mi pare sensato, l'unica spiegazione plausibile peraltro

    Chissa allora perche chi mi ha fornito la libreria non ha pensato di documentare il codice di errore 23

  4. #4
    Magari è un campo di bit... allora valori superiori al massimo documentato sarebbero sensati.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.