Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] Domanda sul #define

    Ciao a tutti, ho una domanda sul comportamento di #define:
    io sapevo che la direttiva al preprocessore
    codice:
    #define A B
    cerca nel sorgente tutte le occorrenze di A e le sostituisce con B, e passa il nuovo file creato al compilatore che lo compila. Giusto no?

    Ora, se per esempio volessi stampare 1.5, faccio:
    codice:
    #define A 3
    
    ...
    
    printf("%lf", A. / 2);
    perchè mi aspetto che il precompilatore generi un file fatto così:
    codice:
    ...
    printf("%lf", 3. / 2);
    ma invece non capisco cosa genera, fatto sta che il compilatore da error che non capisce il punto.
    Invece:
    codice:
    #define A 3.
    
    ...
    
    printf("%lf", A / 3);
    fa quello che deve fare. Ma non sono la stessa identica cosa agli occhi del compilatore?

    Non è strano? Come si spiega??

    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il fatto è che il preprocessore cerca il token

    A.

    e non il token A per la sostituzione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    e se scrivo allora

    #define A 3

    e poi uso

    A .

    cioè A<spazio><punto>

    ? cerca sempre il token A. e ignora lo spazio?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... hai lo stesso errore di compilazione come se scrivessi

    3 . / 2
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.