Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: [C]Keywords

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965

    [C]Keywords

    Keywords in C.
    Molte le conosco, ma poco. Me le potreste spiegare meglio?

    1) Unsigned (specifica il numero di byte da "assegnare" alla variabile, qualcosa del genere )
    2) volatile (variabile modificabile dal s.o. o dall'hardware, qualcosa del genere)
    3) __inline__
    4) __volatile__
    5) asm (precedeva __volatile__, non so se e' una funzione o una keyword per l'inserimento di codice assembly)

    in internet (pagine italiane) danno spiegazioni buttate al vento

    ciao, grazie

  2. #2
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    1) Unsigned non cambia le dimensioni di una variabile, ma solo il modo in cui verranno interpretati i dati.
    Il suo opposto è signed, ma non è obbligatorio metterlo
    Ad esempio:
    codice:
    // Sarebbe uguale scrivere "signed int i"
    int i;
    // Lo posso fare con i numeri negativi
    i = -500;
    // Questo non lo posso fare perchè i signed vanno da -2 miliardi e 
    // passa a + 2 miliardi e passa.
    // i = 3000000000;
    
    // Una variabile unsigned
    // occupa 4 byte come i
    unsigned int u;
    // Posso farlo: va da 0 a 4.073.732.417 se nn mi sbaglio :F
    u = 3000000000;
    // Non posso farlo: solo numeri negativi
    // u = -134;
    2) volatile indica che una variabile può essere modificata, come dici tu, da un dispositivo hardware e quindi il compilatore non eseguirà alcune ottimizzazioni che potrebbero creare problemi.

    3) inline equivale a creare una macro con #define, solo che ti permette di usare la normale sintassi delle funzioni.
    Se crei una funzione inline, ogni volta che la chiami sarà come ricopiata in quella linea di codice.

    4) come volatile credo

    5) infatti permette di inserire codice assembler!


  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    codice:
    static volatile unsigned int dma_chan_busy[MAX_DMA_CHANNELS] = {
    	1, 0, 0, 0, 1, 0, 0, 0
    };
    sembra un'enumerazione, ma non so...
    (forse era dichiarata in un file incluso)

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    non mi dispiacerebbe capire anche questo

    codice:
    #define inw_p(port) \
    ((__builtin_constant_p((port)) && (port) < 256) ? \
    	__inwc_p(port) : \
    	__inw_p(port))

  5. #5
    Utente di HTML.it L'avatar di pdpmpd
    Registrato dal
    Jan 2003
    Messaggi
    448
    è un preprocessore con una condizione
    <condizione>?<se è vera>:<altrimenti>
    questa struttura la dovresti poter usare anche nel codice vero e proprio.
    Drug misuse is not a disease, it is a decision, like the decision to step out in front of a moving car. [...] In this particular life-style the motto is "be happy now because tomorrow you are dying", but the dying begins almost at once, and the happiness is a memory.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    ah beh l'operatore trinario lo conoscevo

  7. #7
    Utente di HTML.it L'avatar di pdpmpd
    Registrato dal
    Jan 2003
    Messaggi
    448
    cosa c'è che non ti torna?
    Drug misuse is not a disease, it is a decision, like the decision to step out in front of a moving car. [...] In this particular life-style the motto is "be happy now because tomorrow you are dying", but the dying begins almost at once, and the happiness is a memory.

  8. #8
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Originariamente inviato da keratox
    non mi dispiacerebbe capire anche questo

    codice:
    #define inw_p(port) \
    ((__builtin_constant_p((port)) && (port) < 256) ? \
    	__inwc_p(port) : \
    	__inw_p(port))
    Usando il + moderno inline ed espandendo il codice viene tradotto circa in:

    codice:
    inline inw_p(int port) {
    if (__builtin_constant_p(port)) {
        if(port < 256) {
            __inwc_p(port);
        } else {
            inw_p(port);
        }
    }
    }
    anche se nn ho idea di cosa possa servire...

  9. #9
    typedef unsigned short u16;

    typedef struct {
    u16 offset0_15;
    u16 selector;
    u16 type;
    u16 offset16_31;
    } __attribute__ ((packed)) idtDesc;


    Cosa vuol dire il tutto ?
    ma soprattutto __attribute__ ((packed)) idtDesc;

  10. #10
    Utente di HTML.it L'avatar di pdpmpd
    Registrato dal
    Jan 2003
    Messaggi
    448
    viene dichiarato il tipo u16 (che è un placeholder per il tipo UNSIGNED INT -> intero positivo), questo tipo viene usato per dichiarare gli elementi di una struttura.

    questo:
    __attribute__ ((packed)) idtDesc;
    probabilmente deriva da un preprocessore (#define), controlla.
    Drug misuse is not a disease, it is a decision, like the decision to step out in front of a moving car. [...] In this particular life-style the motto is "be happy now because tomorrow you are dying", but the dying begins almost at once, and the happiness is a memory.

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.