[VS c] compiler flag variable declaration in block

Pagina: 1
Acties:

  • Rukapul
  • Registratie: Februari 2000
  • Laatst online: 09:59
Voor het compileren van de sourcecode van SpamPal (http://www.spampal.co.uk ) moet ik zelf een project file in elkaar zetten. Helaas gebruikt de maker een vorm van (non-ANSI?) C die niet door de C compiler van Visual Studio.NET geslikt wordt.

Het probleem is dat de auteur code schrijft waarin ook variabele declaraties voorkomen die niet aan het begin van een block staan zoals 'int j' in dit voorbeeld. Hoe breng ik VS aan de wijs dat hij dit wel moet compilen zonder error?
code:
1
2
3
4
5
6
7
8
void f()
{
   int i;

   i=1;
   int j;
   j=3;
}

edit:
stomme progfout verwijderd :+

[ Voor 6% gewijzigd door Rukapul op 13-01-2003 22:04 ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Ik kan me _echt_ niet voorstellen dat je een int niet in het midden van een functie mag neerzetten. Dat is iig 100% ANSI compatible.

Zal het even testen met G++

edit:
Sjiiiiiit, niet gelezen dat het om C ging ipv C++. Ik houd m'n mond wel weer :(

[ Voor 25% gewijzigd door Glimi op 13-01-2003 22:13 ]


  • Rukapul
  • Registratie: Februari 2000
  • Laatst online: 09:59
Glimi schreef op 13 januari 2003 @ 22:06:
Ik kan me _echt_ niet voorstellen dat je een int niet in het midden van een functie mag neerzetten. Dat is iig 100% ANSI compatible.

Zal het even testen met G++
In C++ mag het sowieso wel, maar in C volgens mij niet. Iig heb ik dezelfde fout wel eens gehad bij zelfgeschreven code met gcc.
Soultaker schreef op 13 January 2003 @ 22:13:
Met ANSI-C mag het ZEKER NIET! Maar probeer de code eens als C++ code te compileren. C++ is in principe backwards compatible met C (op wat details na), dus de kans is groot dat dat zonder problemen werkt.
Kan dit met een compiler flag en dus zonder alle files te renamen naar .cpp?

[ Voor 34% gewijzigd door Rukapul op 13-01-2003 22:31 ]


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 24-08 23:08
Met ANSI-C mag het ZEKER NIET! Maar probeer de code eens als C++ code te compileren. C++ is in principe backwards compatible met C (op wat details na), dus de kans is groot dat dat zonder problemen werkt.

  • Rukapul
  • Registratie: Februari 2000
  • Laatst online: 09:59
kick

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 24-08 22:38
In VC 6 maakt de switch /TP van alles een C++ source en /TC van alles een C source.

( /Tp filename en /Tc filename voor een enkele source )

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:11

.oisyn

Moderator Devschuur®

Demotivational Speaker



heb je al eens gedaan wat Soultaker voorstelde?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Rukapul
  • Registratie: Februari 2000
  • Laatst online: 09:59
.c in .cpp veranderen heeft geen zin omdat het andere problemen introduceert, bijvoorbeeld dat alle impliciete casts van C in C++ expliciet moeten zijn (bijvoorbeeld calls naar malloc).

/TP gebruiken werkt niet onder VS.NET (en zou anders waarschijnlijk dezelfde gevolgen als hierboven).

Ik ben dus echt op zoek naar wat compilerflags die wat soepeler zijn dan standaard ansi C. Het is namelijk niet mijn bedoeling om de hele code naar een andere compiler te porten ;)

[ Voor 3% gewijzigd door Rukapul op 14-01-2003 20:12 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:11

.oisyn

Moderator Devschuur®

Demotivational Speaker

ok, dus het is wel daadwerkelijk C-code

hmmja, MS extensies staan standaard aan, dus als het mogelijk was dan hoefde je er geen compilerflag voor om te zetten...

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
Het is sinds 3 jaar wel ANSI-C compatible. C99 weliswaar, en MSVC implementeert helaas alleen C90.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1