Jak wspominaliśmy, każdy preprocesor związany z kompilatorem C++ definiuje makro __cplusplus, a związany z kompilatorem czystego, standardowego C nazwę __STDC__. Nie są to jedyne takie predefiniowane makra.
Niezależnie od platformy powinny zawsze być zdefiniowane niektóre nazwy (makra) — na początku i końcu występują zwykle podwójne podkreślniki. Nazwy te mają przypisane wartości, którymi zostanie zastąpione każde ich wystąpienie w tekście programu :
1. #include <iostream> 2. using namespace std; 3. 4. int main() { 5. cout << "Plik: " << __FILE__ << endl 6. << "Data: " << __DATE__ << endl 7. << "Linia: " << __LINE__ << endl 8. << "Czas: " << __TIME__ << endl 9. << "Funkcja: " << __FUNCTION__ << endl; 10. }
którego kompilacja i uruchomienie miało następujący przebieg:
cpp> gpp dataczas.cpp cpp> ./a.out Plik: dataczas.cpp Data: Jul 10 2017 Linia: 7 Czas: 23:04:34 Funkcja: main
T.R. Werner, 23 lutego 2022; 19:40