MSBuild/compiler constanten Overzicht Laatste deel

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Anoniem: 530556

Topicstarter
Hallo medetweaker,
qua nieuwsgierigheid/hobby ben ik aan het kijken hoe Visual Studio onder de motorkap werkt.

Hierdoor heb ik veel geleerd over de compiler switches en het msbuild project formaat.
Tot zover is het me gelukt om een winforms, wpf en console applicatie te compileren zonder VS :)

Allemaal leuk en aardig, maar nu ben ik nieuwsgierig welke constanten er beschikbaar zijn voor de preprocessor?

Als ik kijk naar MVVM light dan gebruikt die allemaal verschillende constanten.
Waar komen die allemaal vandaan ?

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 01-06 14:20
Een deel kan je in je project settings setten en dan kunnen er nog wat worden meegegeven aan de compiler met
/define:<constante>

Een paar worden eigenlijk altijd wel geset door VS, maar kunnen ook handmatig weer worden undefined. Dat zijn: DEBUG en TRACE.

Dit is dan overigens voor C# en VB, voor c++ zal het nog wel weer iets anders zijn.

[ Voor 34% gewijzigd door Caelorum op 28-10-2013 21:24 ]


Acties:
  • 0 Henk 'm!

Anoniem: 530556

Topicstarter
Misschien gebruik ik wat verkeerde termen. Bij de compiler noemen ze DEBUG, TRACE, etc, symbols ?

Ik had de DEBUG en TRACE symbolen(?) al gevonden, maar bij MVVM light zie ik ook allemaal andere symbols naast debug en trace. Zijn die predefined, NETFX_CORE, SILVERLIGHT, etc?

[ Voor 6% gewijzigd door Anoniem: 530556 op 28-10-2013 22:40 ]


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 01-06 14:20
Zelf gedefined waarschijnlijk, behalve DEBUG en TRACE is er standaard geen conditional compilation constant gedefinieerd voor een C#/VB.NET project.
Voor vc++ zie ik in mijn huidig project de volgende preprocessor definitions: WIN32, _DEBUG (voor debug), _CONSOLE, NDEBUG (voor release), _UNICODE en UNICODE

Waar je dus op wilt zoeken zijn Conditional Compilation Constants voor een .net project en voor vc++ preprocessor definitions.
Het lijkt er op dat SILVERLIGHT wel een standaard predefined iets is, maar dan waarschijnlijk alleen voor silverlight projecten. NetFX zal dan ook wel zoiets zijn. SL3 wordt in MVVM light ook gebruikt, maar vraag me af of dat ook een standaard definitie is.

De vraag is eigenlijk, waarom wil je dat weten? Want in principe kan je ook je constants en definitions toe voegen. Dus dat maakt dat echt alles beschikbaar is.

[ Voor 55% gewijzigd door Caelorum op 28-10-2013 22:52 ]


Acties:
  • 0 Henk 'm!

Anoniem: 530556

Topicstarter
Bedankt voor je duidelijk antwoordt. Mag ik vragen hoe je kan zien welke definities er bestaan ?

[ Voor 0% gewijzigd door Anoniem: 530556 op 28-10-2013 23:11 . Reden: Typo ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
NETFX_CORE is windows 8.

[ Voor 8% gewijzigd door Grijze Vos op 28-10-2013 23:06 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Anoniem: 530556

Topicstarter
Duidelijk.

Dus je kan gewoon onbekende definities (NETFX_CORE) gebruiken in je code zodat het per project/compiler andere executable kan opleveren ?

Edit:
Caelorum schreef op maandag 28 oktober 2013 @ 22:46:
De vraag is eigenlijk, waarom wil je dat weten? Want in principe kan je ook je constants en definitions toe voegen. Dus dat maakt dat echt alles beschikbaar is.
Mijn doel is om uit te zoeken hoe VS alles onder de motorkap doet. Als ik kijk naar een project als mvvm light, stuit ik op dit soort vragen. Google levert niet veel op :P

[ Voor 60% gewijzigd door Anoniem: 530556 op 28-10-2013 23:19 ]


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 01-06 14:20
Dat is wel een beetje het punt ja. Zo wordt code tussen bijv. #ifdef WHATEVER en #endif alleen gebruikt compiled als WHATEVER is gedefinieerd. Als dat niet zo is zal het niet gecompileerd worden.

Acties:
  • 0 Henk 'm!

  • HMS
  • Registratie: Januari 2004
  • Laatst online: 30-05 18:55

HMS

Kijk eens naar hoe welke stappen een compiler als GCC neemt, dus preprocessing, assembling, linking, etc.

Hier staat al redelijk wat: Wikipedia: Compiler
Anders hier nog wat meer: http://www.diku.dk/~torbenm/Basics/

Zoeken op "compiler design" of iets dergelijks met Google moet je een schat aan informatie opleveren.
Pagina: 1