Delen via


Stapsgewijze handleiding: Een C-programma compileren via de opdrachtregel

De buildhulpprogramma's van Visual Studio bevatten een C-compiler die u kunt gebruiken om alles te maken, van basisconsoleprogramma's tot volledige Windows-bureaubladtoepassingen en mobiele apps. Microsoft C/C++ (MSVC) is een C- en C++-compiler die, in de nieuwste versies, voldoet aan enkele van de nieuwste C-taalstandaarden, waaronder C11 en C17.

In deze handleiding wordt uitgelegd hoe u een eenvoudig Hello, World-style C-programma maakt met behulp van een teksteditor en deze vervolgens compileert op de opdrachtregel. Als u liever in C++ op de opdrachtregel werkt, raadpleegt u Walkthrough: Een systeemeigen C++-programma compileren op de opdrachtregel. Als u de Visual Studio IDE wilt uitproberen in plaats van de opdrachtregel te gebruiken, raadpleegt u Walkthrough: Werken met projecten en oplossingen (C++) of de Visual Studio IDE gebruiken voor C++ Desktop Development.

Vereiste voorwaarden

  • Visual Studio of de buildhulpprogramma's voor Visual Studio en de desktopontwikkeling met C++-workload

    • Visual Studio is een krachtige geïntegreerde ontwikkelomgeving die ondersteuning biedt voor een volledige editor, resourcemanagers, foutopsporingsprogramma's en compilers voor veel talen en platforms. Zie Visual Studio installeren voor informatie over deze functies en het downloaden en installeren van Visual Studio, inclusief de gratis Visual Studio Community-editie.
    • De buildhulpprogramma's voor Visual Studio installeren alleen de opdrachtregelhulpprogramma's, de compilers, hulpprogramma's en bibliotheken die u nodig hebt om C- en C++-programma's te bouwen. Het is perfect voor bouwlabs of voor leslokaaloefeningen en installeert relatief snel. Als u alleen de opdrachtregelhulpprogramma's wilt installeren, downloadt u bouwhulpprogramma's voor Visual Studio vanaf de downloadpagina van Visual Studio en voert u het installatieprogramma uit. Selecteer in het installatieprogramma van Visual Studio de desktopontwikkeling met C++ -workload (in oudere versies van Visual Studio, selecteer de workload C++-buildhulpprogramma's ) en kies Installeren.
  • MSVC-compiler

    • MSVC heeft complexe vereisten voor de opdrachtregelomgeving om de hulpprogramma's, headers en bibliotheken te vinden die worden gebruikt. U kunt MSVC niet gebruiken in een opdrachtpromptvenster zonder enige voorbereiding. U hebt een opdrachtpromptvenster voor ontwikkelaars nodig. Dit is een normaal opdrachtpromptvenster waarin alle vereiste omgevingsvariabelen zijn ingesteld. Gelukkig installeert Visual Studio snelkoppelingen waarmee u ontwikkelaar-opdrachtprompts kunt starten, waarbij de omgeving is ingesteld voor builds via de opdrachtregel. Helaas zijn de namen van de snelkoppelingen voor de opdrachtprompt voor ontwikkelaars en waar ze zich bevinden verschillend in bijna elke versie van Visual Studio en in verschillende versies van Windows. De eerste walkthrough-taak is het vinden van de juiste snelkoppeling die u wilt gebruiken.

Opmerking

Met een opdrachtpromptsnelkoppeling voor ontwikkelaars worden automatisch de juiste paden ingesteld voor de compiler en hulpprogramma's en voor eventuele vereiste headers en bibliotheken. Sommige van deze waarden verschillen voor elke buildconfiguratie. U moet deze omgevingswaarden zelf instellen als u geen van de sneltoetsen gebruikt. Zie De MSVC-toolset gebruiken vanaf de opdrachtregel voor meer informatie. Omdat de buildomgeving complex is, raden we u ten zeerste aan om een snelkoppeling naar de ontwikkelaarsopdrachtprompt te gebruiken in plaats van er zelf een te bouwen.

Deze instructies variëren, afhankelijk van de versie van Visual Studio die u gebruikt. Als u de documentatie voor uw favoriete versie van Visual Studio wilt bekijken, gebruikt u de versiekiezer boven aan de inhoudsopgave op deze pagina.

Een opdrachtprompt voor ontwikkelaars openen in Visual Studio 2022

Als u Visual Studio 2022 hebt geïnstalleerd in Windows 10 of hoger, opent u het menu Start en kiest u Alle apps. Schuif vervolgens omlaag en open de map Visual Studio 2022 (niet de Visual Studio 2022-app). Kies Opdrachtprompt voor Ontwikkelaars voor VS 2022 om het opdrachtpromptvenster te openen.

Een opdrachtprompt voor ontwikkelaars openen in Visual Studio 2019

Als u Visual Studio 2019 hebt geïnstalleerd in Windows 10 of hoger, opent u het menu Start en kiest u Alle apps. Schuif vervolgens omlaag en open de map Visual Studio 2019 (niet de Visual Studio 2019-app). Kies Opdrachtprompt voor Ontwikkelaars voor VS 2019 om het opdrachtpromptvenster te openen.

Een opdrachtprompt voor ontwikkelaars openen in Visual Studio 2017

Als u Visual Studio 2017 hebt geïnstalleerd in Windows 10 of hoger, opent u het menu Start en kiest u Alle apps. Schuif vervolgens omlaag en open de map Visual Studio 2017 (niet de Visual Studio 2017-app). Kies Opdrachtprompt voor Ontwikkelaars voor VS 2017 om het opdrachtpromptvenster te openen.

Een opdrachtprompt voor ontwikkelaars openen in Visual Studio 2015

Als u Microsoft Visual C++ Build Tools 2015 in Windows 10 of hoger hebt geïnstalleerd, opent u het menu Start en kiest u Alle apps. Schuif vervolgens omlaag en open de map Visual C++ Build Tools . Kies Visual C++ 2015 x86 Native Tools Command Prompt om het opdrachtpromptvenster te openen.

Als u een andere versie van Windows gebruikt, zoekt u in het startmenu of de startpagina naar een map met visual Studio-hulpprogramma's die een snelkoppeling voor de opdrachtprompt voor ontwikkelaars bevat. U kunt ook de Windows-zoekfunctie gebruiken om te zoeken naar een opdrachtprompt voor ontwikkelaars en er een te kiezen die overeenkomt met uw geïnstalleerde versie van Visual Studio. Gebruik de snelkoppeling om het opdrachtpromptvenster te openen.

Controleer vervolgens of de opdrachtprompt voor ontwikkelaars juist is ingesteld. Voer in het opdrachtpromptvenster ( cl of CL, case maakt niet uit voor de naam van de compiler, maar het maakt wel uit voor compileropties). Het resultaat moet er ongeveer zo uitzien:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise>cl
Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

usage: cl [ option... ] filename... [ /link linkoption... ]

Er kunnen verschillen zijn in de huidige map- of versienummers, afhankelijk van de versie van Visual Studio en eventuele geïnstalleerde updates. Als de voorgaande uitvoer vergelijkbaar is met wat u ziet, kunt u C- of C++-programma's bouwen op de opdrachtregel.

Opmerking

Als u een fout krijgt zoals 'cl' wordt niet herkend als een interne of externe opdracht, beveiligbaar programma of batchbestand, fout C1034 of fout LNK1104 wanneer u de cl opdracht uitvoert, gebruikt u geen opdrachtprompt voor ontwikkelaars of is er iets mis met de installatie van Visual Studio. U moet dit probleem oplossen voordat u kunt doorgaan.

Als u de snelkoppeling naar de opdrachtprompt voor ontwikkelaars niet kunt vinden of als u een foutbericht krijgt wanneer u invoert cl, kan er een probleem zijn met de installatie van Visual Studio. Als u Visual Studio 2017 of hoger gebruikt, probeer dan de workload Desktopontwikkeling met C++ opnieuw te installeren in het installatieprogramma van Visual Studio. Zie C++-ondersteuning installeren in Visual Studio voor meer informatie. U kunt ook de buildhulpprogramma's opnieuw installeren vanaf de downloadpagina van Visual Studio . Ga pas verder met de volgende sectie als de cl opdracht werkt. Zie Visual Studio installeren voor meer informatie over het installeren en oplossen van problemen met Visual Studio.

Opmerking

Afhankelijk van de versie van Windows op de computer en de systeembeveiligingsconfiguratie, moet u mogelijk met de rechtermuisknop klikken om het snelmenu voor de snelkoppeling voor de opdrachtprompt voor ontwikkelaars te openen en vervolgens Uitvoeren als administrator te kiezen om het programma dat u maakt, te bouwen en uit te voeren door deze procedure te volgen.

Maak een C-bronbestand en compileer het op de opdrachtregel

  1. Voer in het opdrachtpromptvenster voor ontwikkelaars cd c:\ in om de huidige werkmap te wijzigen naar de hoofdmap van uw C-schijf. Voer vervolgens in md c:\hello om een map te maken en voer cd c:\hello vervolgens in om naar die map te gaan. Deze map bevat uw bronbestand en het gecompileerde programma.

  2. Voer dit in notepad hello.c bij de opdrachtprompt voor ontwikkelaars. Kies Ja in het waarschuwingsdialoogvenster van Kladblok dat wordt weergegeven om een nieuw hello.c bestand in uw werkmap te maken.

  3. Voer in Kladblok de volgende regels met code in:

    #include <stdio.h>
    
    int main()
    {
        printf("Hello, World! This is a native C program compiled on the command line.\n");
        return 0;
    }
    
  4. Op de menubalk van Kladblok, kies Bestand>Opslaan om hello.c in uw werkmap op te slaan.

  5. Ga terug naar het opdrachtpromptvenster voor ontwikkelaars. Voer dir bij de opdrachtprompt in om de inhoud van de c:\hello map weer te geven. U zou het bronbestand hello.c in de directorylijst moeten zien, die er ongeveer als volgt uitziet:

    C:\hello>dir
     Volume in drive C has no label.
     Volume Serial Number is CC62-6545
    
     Directory of C:\hello
    
    10/02/2017  03:46 PM    <DIR>          .
    10/02/2017  03:46 PM    <DIR>          ..
    10/02/2017  03:36 PM               143 hello.c
                   1 File(s)            143 bytes
                   2 Dir(s)  514,900,566,016 bytes free
    
    

    De datums en andere details verschillen op uw computer. Als u het broncodebestand niet ziet, hello.c controleer dan of u naar de c:\hello map bent gewisseld die u hebt aangemaakt en controleer in Kladblok of u het bronbestand in deze map hebt opgeslagen. Zorg er ook voor dat u de broncode hebt opgeslagen met een .c bestandsnaamextensie, niet een .txt extensie.

  6. Als u uw programma wilt compileren, voert u dit in cl hello.c bij de opdrachtprompt voor ontwikkelaars.

    U kunt de naam van het uitvoerbare programma zien, hello.exein de regels met uitvoergegevens die door de compiler worden weergegeven:

    c:\hello>cl hello.c
    Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    hello.c
    Microsoft (R) Incremental Linker Version 14.10.25017.0
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    /out:hello.exe
    hello.obj
    

    Opmerking

    Als er een fout wordt weergegeven, zoals 'cl' wordt niet herkend als een interne of externe opdracht, uitvoerbaar programma of batchbestand, fout C1034 of fout LNK1104, is de opdrachtprompt voor ontwikkelaars niet correct ingesteld. Ga terug naar de sectie Een opdrachtprompt voor ontwikkelaars openen voor informatie over het oplossen van dit probleem.

    Als u een andere compiler- of linkerfout of -waarschuwing krijgt, controleert u de broncode om eventuele fouten te corrigeren, slaat u deze op en voert u de compiler opnieuw uit. Gebruik het zoekvak boven aan deze pagina om naar het foutnummer te zoeken voor informatie over specifieke fouten.

  7. Als u het programma wilt uitvoeren, voert u dit in hello bij de opdrachtprompt.

    Het programma geeft deze tekst weer en wordt vervolgens afgesloten.

    Hello, World! This is a native C program compiled on the command line.
    

    Gefeliciteerd, u hebt een C-programma gecompileerd en uitgevoerd met behulp van de opdrachtregel.

Geavanceerde stappen

Dit Hello, World-voorbeeld is ongeveer zo eenvoudig als een C-programma kan krijgen. Echte programma's hebben koptekstbestanden en meer bronbestanden, koppeling in bibliotheken en doen nuttig werk.

U kunt de stappen in dit scenario gebruiken om uw eigen C-code te bouwen in plaats van de voorbeeldcode te typen die wordt weergegeven. U kunt ook veel C-codevoorbeeldprogramma's bouwen die u elders vindt. Als u een programma met meer broncodebestanden wilt compileren, voert u ze allemaal in op de opdrachtregel:

cl file1.c file2.c file3.c

De compiler voert een programma uit met de naam file1.exe. Als u de naam program1.exe wilt wijzigen, voegt u een /out-linkeroptie toe.

cl file1.c file2.c file3.c /link /out:program1.exe

En als u automatisch meer programmeerfouten wilt ondervangen, raden we u aan om te compileren met behulp van de optie /W3 of /W4-waarschuwingsniveau :

cl /W4 file1.c file2.c file3.c /link /out:program1.exe

De compiler, cl.exeheeft veel meer opties die u kunt toepassen op het bouwen, optimaliseren, opsporen en analyseren van uw code. Voer de opdrachtprompt cl /? voor ontwikkelaars in voor een snelle lijst. U kunt ook compileren en linken afzonderlijk uitvoeren en linkeropties toepassen in complexere buildscenario's. Zie C/C++ Bouwreferentie voor meer informatie over compiler- en linkeropties en -gebruik.

U kunt NMAKE en makefiles, of MSBuild en projectbestanden gebruiken om complexere projecten via de opdrachtregel te configureren en te bouwen. Zie NMAKE Reference en MSBuild voor meer informatie over het gebruik van deze hulpprogramma's.

De C- en C++-talen zijn vergelijkbaar, maar niet hetzelfde. De MSVC-compiler gebruikt een basisregel om te bepalen welke taal moet worden gebruikt wanneer uw code wordt gecompileerd. De MSVC-compiler behandelt standaard alle bestanden die eindigen .c als C-broncode en alle bestanden die eindigen .cpp als C++-broncode. Als u wilt afdwingen dat de compiler alle bestanden behandelt als C, ongeacht de bestandsnaamextensie, gebruikt u de optie /TC-compiler .

MSVC is standaard compatibel met de ANSI C89- en ISO C99-standaarden, maar niet strikt conform. In de meeste gevallen compileert en wordt de draagbare C-code gecompileerd en uitgevoerd zoals verwacht. De compiler biedt optionele ondersteuning voor de wijzigingen in ISO C11 en C17. Als u wilt compileren met C11- en C17-ondersteuning, gebruikt u de compilervlag /std:c11 of /std:c17. C11- en C17-ondersteuning vereist Windows SDK 10.0.20201.0 of hoger. Windows SDK 10.0.22000.0 of hoger wordt aanbevolen. U kunt de nieuwste SDK downloaden vanaf de pagina Windows SDK . Zie C11- en C17-ondersteuning installeren in Visual Studio voor meer informatie en instructies over het installeren en gebruiken van deze SDK voor C-ontwikkeling.

Bepaalde bibliotheekfuncties en POSIX-functienamen worden afgeschaft door MSVC. De functies worden ondersteund, maar de voorkeursnamen zijn gewijzigd. Zie Beveiligingsfuncties in crt en compilerwaarschuwing (niveau 3) C4996 voor meer informatie.

Zie ook