Gå til innhold

Strengere syntax i MS visual studio


Anbefalte innlegg

Hallo,

 

Skriver et plattform uavhengig program i C++ og bruker Visual Studio .Net.

Jeg bruker visual studio, fordi det er mitt prefererte utviklingsverktøy, og er -ikke- interessert i å bytte til noe annet ( Det var et såkalt "pre-emptive" utsagn ;) ).

 

Jeg utvikler det jeg ønsker i windows, og når jeg har programert en versjon kompilerer jeg den i linux. Dette går jo forsåvidt greit, men har oppdaget g++ under linux er litt strengere, spesielt på castingen av float/double/int, som gjør at jeg får en del warnings( eller "advarser" for kverulante språkfanatikere ) under linux. Derfor lurte jeg på om det er noen som vet om det finnes noe allà "option strict" for c++ i Visual Studio, slik at jeg kan minimere antall "feil" når jeg porter til linux.

 

Har lekt meg litt inne i project settings, og forsøkt å øke warning-level ( advarsel-nivå ) til w4, men dette gav meg kun advarsler om tilordning under tester ( hvilket jeg gjør et par steder ( eks: while( eksempel = getValue( ) ) , når getValue returnerer 0 er løkken ferdig. ).

Har også prøvd å skrive inn STRICT i preprocessordefinitions uten at dette hadde noe særlig effekt, etter en kikk på msdn ( men dette var slik det var under VS 6.0, og fant intet om .NET ).

 

Dette er egentlig bare et mildt irritasjonsmoment, men hvis det er noen som kan forklare meg hvordan jeg gjør dette så blir jeg glad :D .

Lenke til kommentar
Videoannonse
Annonse

Hvilken versjon av .NET har du? 2003 versjonen (7.1) er ganske tett til standarden og er mye bedre enn sine forgjengere.

 

Du kan definere STRICT som preprocessor definition, men det har bare effekt på enkelte Windows typer mener jeg å huske (f.eks. mer kritisk til HANDLE = HWND osv..)

 

Ellers kan kan du prøve å innstallere Intel sin kompilator hvis du har tilgang til den. Den er tett integrert med Visual Studio og du bruker den på akkurat samme måten som Microsoft sin :) Tror 8.0 er siste versjon.

Lenke til kommentar

Fins det ikke ulike nivåer for generering av advarsler som i gcc/icc (-W*, -ansi etc.)?

Edit: Brukte du w4 sa du? Sjekket referansen, og det kan se ut som w skrur av advarsler, mens W stiller graden av advarsler. Wall er nok det du er ute etter.

Endret av A_N_K
Lenke til kommentar

Kjetil: Har versjon 7.0.9466 (2002), og "no updates available" ... :(

Ser intel kompilatoren koster 400$ etter prøve perioden, så det er det ikke verd for å bli kvitt noen warninger... ( trenger jo bare å gå gjennom og caste eller avrunde på noen få stedet istedet for å komilere direkte )

 

A_N_K: Prøvde med W4 ... i Visual studio er det et valg, så jeg skrev ikke inn w4 første gangen :) .

Hva mener du med at Wall er det er er ute etter ?

 

Gikk gjennom og fjernet warningene i går, men er jo fortsatt interresert i å få det mest mulig likt framover( kanskje jeg bare skal bli flinkere til å huske på å caste eksplisitt :) )

Lenke til kommentar

Wall ser ut til å slå på alt av warnings, dette bør være nok til å få VC++ til å klage på implisitt casting mellom float<->int etc, hvis den er såpass strikt. Angående 7.1 vs 7.0: Jeg husker sant å si ikke hvordan det gikk for seg (mulig det var en begrenset periode), men jeg fikk i alle fall tilsendt en gratis oppgradering fra 7.0 til 7.1.

Lenke til kommentar

Ser ut som du har 2002 versjonen av .NET. Selv har jeg 7.1.3088. Vet ikke om du bruker en ny eller en gammel kompilator, men min kompilatorversjon er 13.10.3077. Det er STOR forskjell på kompilatoren som følger med .NET 2002 og .NET 2003!

 

Når du sier at det er "No updates available" tror jeg det har sammenheng med at den nye versjonen koster litt penger selv om du har den gamle (de hadde ihvertfall en oppgraderingspakke som man kunne kjøpe).

 

Har du noen konkrete eksempler hvor gcc gir deg warning og vc++ ikke?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...