Se in C# questo snippet:
using System;
using System.Reflection;
 
class Foo
{
      static void Main()
      {
            Console.WriteLine(Assembly.GetEntryAssembly().EntryPoint.Name);
      }
} 
stampa Main a console, non la stessa cosa si può dire dell'equivalente C++:
using namespace System;
using namespace System::Reflection;
 
void main()
{
    Console::WriteLine(Assembly::GetEntryAssembly()->EntryPoint->Name);
} 
che stampa a console:
- main
 
- mainCRTStartup oppure
 
- _mainCRTStartup
 
in base alle opzioni:
- /clr:safe
 
- /clr:pure rispettivamente
 
- /clr:oldSyntax (oppure /clr:initialAppDomain)
 
dove mainCRTStartup e _mainCRTStartup sono funzioni di C/C++ run-time startup. Il compilatore (tranne nel caso /clr:safe) chiama prima queste funzioni per le inizializzazioni necessarie alla C/C++ run-time library (variabili globali, heap, etc) e quindi saranno loro quelle decorate con .entrypoint in IL e non il metodo main dello snippet. L'opzione /clr:safe invece, produce codice verificabile e non offre supporto CRT e quindi niente stub.