Wat is het CPP-bestandsformaat?
.cpp-bestanden bevatten broncode geschreven in C++, een programmeertaal voor algemene doeleinden die begin jaren 80 werd gecreëerd door Bjarne Stroustrup bij Bell Labs. De extensie .cpp staat voor „C plus plus” - alternatieve conventies zoals .cc en .cxx duiden op hetzelfde soort bronbestand onder verschillende toolchain-tradities.
Inhoud van .cpp-bestanden
Bestanden met een .cpp-extensie kunnen elementen bevatten zoals:
- declaraties van variabelen en typen,
- declaraties en definities van functies,
- klassendeclaraties en implementaties van lidfuncties,
- preprocessor-directives (bijv.
#include <iostream>,#define), - verwijzingen naar systeembibliotheken en
.hof.hppheader-bestanden, - commentaar voor een betere leesbaarheid van de code - deze worden weggelaten tijdens de compilatie.
Is een .cpp-bestand een programma?
.cpp-bestanden bevatten programmabroncode geschreven in C++, maar om dergelijke applicaties uit te voeren moet de broncode worden gecompileerd. Een compiler - zoals g++, clang++ of MSVC - neemt de broncode en vertaalt deze naar machinecode die de computer rechtstreeks kan uitvoeren. Alleen de gecompileerde uitvoer kan een programma worden genoemd; het .cpp-bestand zelf is slechts tekst. Een project compileert doorgaans meerdere .cpp-bestanden en koppelt deze aan elkaar om een definitief uitvoerbaar bestand te produceren.
Kan ik een .cpp-bestand openen?
.cpp-bestanden zijn niets meer dan platte tekstbestanden en kunnen worden bewerkt met elke tekstverwerker. Het bewerken ervan vereist echter kennis van de C++-syntaxis om fouten te voorkomen die compilatie kunnen verhinderen of ervoor kunnen zorgen dat het programma onjuist werkt. Om deze reden kan het bewerken van .cpp-bestanden het beste worden gedaan met speciale tools die handige functies bieden zoals:
- automatische regelnummering,
- syntaxis-accentuering (syntax highlighting),
- code-aanvulling en hints,
- meldingen van syntaxisfouten (ontbrekende sluittekens, puntkomma's, enz.),
- geïntegreerde build- en debugger-ondersteuning.
Populaire omgevingen zijn Microsoft Visual Studio, VS Code en Apple Xcode. Het .cpp-bestand zelf bevat geen ingebedde versie-informatie - de beoogde C++-standaard (van C++98 tot C++23) wordt gekozen tijdens het compileren via compiler-flags.
Beveiliging & veiligheid
RISICO: LOWEen .cpp-bestand is platte tekst en kan niet uit zichzelf worden uitgevoerd, dus het openen ervan in een editor is veilig. Het risico ontstaat pas wanneer u onbekende C++-code COMPILEERT en UITVOERT: broncode van een niet-vertrouwde oorsprong kan alles doen wat een programma kan zodra het is gebouwd (bestanden verwijderen, netwerktoegang, malware installeren), en de low-level toegang van C++ maakt kwaadaardige of foutieve code gemakkelijk te verbergen. Lees de code voordat u deze compileert, bouw niet-vertrouwde code in een sandbox/VM en voer nooit een gecompileerd binair bestand uit dat u niet vertrouwt. De bestandsextensie zelf bevat geen exploit - het gevaar zit in wat de code doet na compilatie.
Formaatdetails
in een notendop- C++ broncode (alternatieve extensies) - Dezelfde C++-bronrol wordt ook vervuld door .cc, .cxx, .c++ en (hoofdletter) .C; .cpp is de dominante Windows/cross-platform conventie.
Programma's die CPP-bestanden openen
Technische details
diepe specificaties| MIME-type | text/x-c++src (ook geaccepteerd: text/x-c++ en text/plain) |
| Bestandscodering | Platte tekst - ASCII of UTF-8; een UTF-8 BOM (EF BB BF) op offset 0 wordt geaccepteerd maar is niet vereist |
| Bestandssignatuur / magic bytes | Geen - geïdentificeerd door inhoud: opent doorgaans met // of /* */ commentaar, #include-directives of klasse-/functiedefinities |
| Bestandsstructuur | Preprocessor-directives (#include, #define, #if), using/namespace-declaraties, klasse- en functiedefinities, en het main() toegangspunt |
| Compilatie vereist | Ja - moet worden gecompileerd door g++, clang++ of MSVC; het .cpp-bestand is voor mensen leesbare brontekst, geen uitvoerbaar bestand |
| Doeltaalstandaarden | C++98, C++03, C++11, C++14, C++17, C++20, C++23; de standaard wordt geselecteerd via een compiler-flag (bijv. -std=c++17) en wordt niet in het bestand opgeslagen |
| Preprocessor-fase | Vóór de compilatie breidt de C-preprocessor #include-directives, #define-macro's en voorwaardelijke compilatieblokken (#if / #endif) uit |
| Bijbehorende bestandstypen | .h en .hpp (header-declaraties), .cc en .cxx (alternatieve C++-bronextensies), .o / .obj (gecompileerde objectbestand-uitvoer) |
| Compilatie-uitvoer | Een objectbestand (.o op Linux/macOS, .obj op Windows) dat de linker combineert met andere objecten tot een uitvoerbaar bestand of gedeelde bibliotheek |
| Typische bestandsgrootte | Enkele KB tot tientallen KB per bronbestand; door machines gegenereerde of zwaar getemplateerde bestanden kunnen groter zijn dan 1 MB |
| Unicode / tekenondersteuning | String-literals en identifiers ondersteunen Unicode (UTF-8) vanaf C++11; u8, u en U string-prefix literals maken expliciete coderingscontrole mogelijk |
| Regeleinden | Platformonafhankelijk - LF (Unix/macOS), CRLF (Windows) en CR worden allemaal geaccepteerd door de grote compilers |
| Geassocieerde besturingssystemen | Windows, macOS, Linux - en elk platform met een conforme C++-compiler toolchain |
| Standaardenorganisatie | ISO/IEC JTC1/SC22/WG21 (het C++ Standards Committee); standaarden worden gepubliceerd als ISO/IEC 14882-revisies op een cyclus van ongeveer 3 jaar |
| Naamgevingsconventie | Komt doorgaans overeen met de klasse of module die het implementeert - bijv. MyClass.cpp gekoppeld aan MyClass.h of MyClass.hpp |
| Betekenis van de extensienaam | De letters „pp” staan voor „plus plus”; identieke C++-broninhoud kan alternatief .cc of .cxx gebruiken volgens toolchain-conventie |
| Uitgebracht | C++ language created 1979-1985 (Bjarne Stroustrup, Bell Labs); first ISO standard C++98 (1998) |
| Laatste versie | ISO/IEC 14882:2024 (C++23); C++26 in progress |
| Open standaard | Ja · royaltyvrij |
| Specificatie | isocpp.org |
CPP conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over CPP-bestanden.