Newsgroup: it.comp.lang.c++
Titolo: Cambio di standard?

 Paolo
Prima di tutto grazie per la risposta, anche se credo di non aver
specificato bene la domanda... :) Potresti gentilmente controllare se ti
compila il seguente?
//------------------------------------------
#include <iostream>
// Dichiaro una funzione
int outfun (int) throw ();
// L'header file dice che il suo tipo è questo
typedef int (*outfuntype)  (int) throw();
int main(int argc, char *argv[])
{
        outfuntype p = &outfun;
        return 0;
}
//------------------------------------------
Il codice che avevo mandato funzionava anche a me - avevo messo la
dichiarazione di tipo di outfuntype 'errata' come commento.
Probabilmente avrai già provato anche l'altra, ma a scanso equivoci...
Quello che ho inserito adesso è equivalente al risultato della
precompilazione - c'è stato forse un cambiamento di standard?
Ancora grazie, per il tuo problema dovrei avere la soluzione ma devo
dare un'occhiata al manuale. Ciao,
    F.

typedef int (*outfuntype)  (int) throw();
e:\test.cpp:7: invalid exception specifications
Bisognerebbe verificare sullo standard, se ne ho il
tempo provo a verificare e ti faccio sapere.
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------

 L'opzione e` -b ma poi?
Ciao,
    ho controllato quello che mi hai chiesto. In realtà, l'opzione -b
serve a specificare l'utilizzo di un'altra tipologia di compilatore,
caso tipico quello di un cross-compilatore:
-----------------------------------------------------------------------------
`-b MACHINE'
     The argument MACHINE specifies the target machine for compilation.
     This is useful when you have installed GCC as a cross-compiler.
     The value to use for MACHINE is the same as was specified as the
     machine type when configuring GCC as a cross-compiler.  For
     example, if a cross-compiler was configured with `configure
     i386v', meaning to compile for an 80386 running System V, then you
     would specify `-b i386v' to run that cross compiler.
     When you do not specify `-b', it normally means to compile for the
     same type of machine that you are using.
-----------------------------------------------------------------------------
Quello che stai cercando tu, invece, credo sia compreso nelle opzioni
-mcpu e -march:
-----------------------------------------------------------------------------
  These `-m' options are defined for the i386 family of computers:
`-mcpu=CPU TYPE'
     Assume the defaults for the machine type CPU TYPE when scheduling
     instructions.  The choices for CPU TYPE are:
     `i386'        `i486'        `i586'        `i686'
     `pentium'     `pentiumpro'  `k6'
     While picking a specific CPU TYPE will schedule things
     appropriately for that particular chip, the compiler will not
     generate any code that does not run on the i386 without the
     `-march=CPU TYPE' option being used.  `i586' is equivalent to
     `pentium' and `i686' is equivalent to `pentiumpro'.  `k6' is the
     AMD chip as opposed to the Intel ones.
`-march=CPU TYPE'
     Generate instructions for the machine type CPU TYPE.  The choices
     for CPU TYPE are the same as for `-mcpu'.  Moreover, specifying
     `-march=CPU TYPE' implies `-mcpu=CPU TYPE'.
-----------------------------------------------------------------------------
Dunque, dipende da quello che vuoi: se desideri semplicemente
ottimizzare lo scheduling delle operazioni per una determinata
architettura, usa `-mcpu', mentre se vuoi proprio compilare
_specificamente_ per quell'architettura devi utilizzare `-march'. Per il
Pentium II non ho trovato niente di applicabile.
Ciao,
        F.