Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633

    [C++] macro e "sovrapposizioni"

    Ciao,
    compilo con VC++ 6, il mio problema è legato (da quanto deduco dal compilatore) dal fatto che per una funzione membro uso un nome già posseduto da una macro, per farla breve:

    codice:
    	#include <iostream>
    	#include <string>
    	using namespace std;
    
    	class Lic{
    		int c;
    	  public:
    		int getc() const{ return c;}
    	}
    il preprocessore interpreta la getc come la "chiamata" alla macro con lo stesso nome e mi segnala l'errore dovuto al fatto che non lo chiamata correttamente...
    c'è un modo migliore per evitare questo conflitto che non sia cambiare il nome della funzione membro?
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  2. #2
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486

    Re: [C++] macro e "sovrapposizioni"

    codice:
    	#include <iostream>
    	#include <string>
    	using namespace std;
    
            namespace Lic
            {
                class Lic{
    		int c;
                public:
    		int getc() const{ return c;}
                };
            }
    ChReAn
    -------------------

    Slackware 9.1 powered

  3. #3
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    In pratica definisci un namespace diverso.
    Per utilizzare classi e variabili dichiarate all'interno del namespace dovrai prima dichiarare l'utilizzo del namespace (using namespace mionamespace; ) e poi usare la sintassi mionamespace::funzione oppure mionamespace::variabile.
    ChReAn
    -------------------

    Slackware 9.1 powered

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    avevo gia provato questa strada (ma per sicurezza l'ho riprovata) e niente...i namespaces mi garantiscono l'assenza di conflitto con le altre classi o funzioni...ma le macro, essendo gestite dal preprocessore mi sa che oltrepassano tutto....

    Nemmeno l'ho istanziata la classe e mi segnala cmq un pacco d'errori...
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  5. #5
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Ma getc non è una macro che io sappia, è una funzione di libreria...

    E infatti il seguente codice non dà alcun errore e funziona.

    codice:
    #include <iostream>
    
    class ciccio
    {
    private:
      char c;
    public:
      ciccio() { c= '2'; }
      char getc () { return c;}
    };
    
    void main ()
    {
      ciccio bariccio;
      cout << bariccio.getc() << endl;
    }
    ChReAn
    -------------------

    Slackware 9.1 powered

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    a me da errore...

    c'è sia la funzione che la macro, in particolare la macro è in stdio.h ed è:
    codice:
    #define getc(_stream)     (--(_stream)->_cnt >= 0 \
                    ? 0xff & *(_stream)->_ptr++ : _filbuf(_stream))
    e compilando il tuo codice ho ben 12 errore tra cui il primo (in realtà questo è uno warning, ma fa capire) dice:
    warning C4003: not enough actual parameters for macro 'getc'
    mah...
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  7. #7
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Io sto usando gcc sotto linux... Forse è quello il punto...
    Continuo ad indagare. :master:
    ChReAn
    -------------------

    Slackware 9.1 powered

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    Originariamente inviato da ChReAn
    Io sto usando gcc sotto linux... Forse è quello il punto...
    Continuo ad indagare. :master:
    quello sicuramente spiega perchè a te funziona e a me no
    ma non risolve il problema del conflitto tra macro e funzioni...

    continuo ad indagare anch'io...
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | 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 © 2024 vBulletin Solutions, Inc. All rights reserved.