|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
[g++] warning su header precompilati
premessa: il g++ fa schifo. fine premessa.
![]() sto scrivendo un programma in C++ per l'universitá che deve avere sorgente portabile compilabile sia su Windows che su Linux, e naturalmente sto usando MinGW (per adesso ancora non ci ho lavorato su Linux, é agli inizi). dal momento che le performance del g++ in compilazione stavano diventando veramente improponibili (io mica posso stare ad aspettare 20 secondi ogni volta che modifico 2 bytes di sorgenti per fare uno straccio di prova che significa "standard application framework") che compilo col g++ in un file StdAfx.h.gch; nel compilarlo uso l'opzione "-x c++-header".tutto bene, ma ho un unico fastidio: qualcuno degli headers dello "standard application framework", non so quale, mi causa il seguente warning: "warning: anonymous variadic macros were introduced in C99" la cosa strana é che me lo provoca solo in forma di PCH, se invece compilo normalmente non ho alcun warning! non é che la cosa mi impedisca di procedere col lavoro, peró mi piacerebbe risolvere perché mi da fastidio vedere un warning per ogni mio file sorgente, anche perché mi nascondono i warning a cui invece dovrei fare caso. questo é il codice di StdAfx.h della versione win32 del progetto (quello per Linux é simile): Codice:
#ifndef __STDAFX_H__ #define __STDAFX_H__ #include <cstdlib> #include <cstring> #include <cerrno> #include <cassert> #include <string> #include <iostream> #include <fstream> #include <sstream> #include <map> #include <memory> #include <streambuf> using namespace std; #ifndef _WIN32_WINNT #define _WIN32_WINNT 0x501 #endif #ifdef UNICODE #undef UNICODE #endif #include <windows.h> #include <winsock2.h> #include <shlobj.h> #endif |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
compila con -Wno-variadic-macros
Se poi ti lamenti così tanto della lentezza di ricompilazione non capisco proprio perché non usi i makefile... con un makefile ben fatto puoi ricompilare solo la roba che hai cambiato e non tutti i sorgenti ogni volta da zero |
|
|
|
|
|
#3 | ||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
ah, cosi proprio...
![]() non é un problema legato allo standard che il compilatore capisce di dover usare? perché mi sta dando un warning relativo ad una versione del C se io sto usando C++? ma soprattutto, perché quando compilo senza i PCH non vedo nessun warning? non c'é modo di far fare al compilatore lo stesso ragionamento che fa quando compila l'header perché lo vede incluso in un sorgente? Quote:
Quote:
Codice:
all : sorgente1.o sorgente2.o sorgente3.o ... * comando per linkare i file oggetto, non ricordo quale fosse * sorgente1.o : sorgente1.cpp g++ $(CFLAGS) -c sorgente1.cpp sorgente2.o : sorgente2.cpp g++ $(CFLAGS) -c sorgente2.cpp sorgente3.o : sorgente3.cpp g++ $(CFLAGS) -c sorgente3.cpp ... ![]() anche perché sti sorgenti diventeranno un po' tantini... |
||
|
|
|
|
|
#4 | ||
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
Quote:
Quote:
Codice:
OBJS= sorgente1.o sorgente2.o sorgente3.o [...] %.o: %.cpp: g++ $(CFLAGS) -c $*.cpp [...] all: $(OBJS) g++ $(LINKEROPTS) -o tuoprogramma $(OBJS) In questa maniera devi solamente aggiornare OBJS ogni volta che fai qualche cambiamento. Certo non è il massimo ma meglio che dover scrivere ogni volta tutto il resto. |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:48.






















