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> g++ -o dataczas dataczas.cpp
cpp> ./dataczas
Plik: dataczas.cpp
Data: Sep 21 2012
Linia: 7
Czas: 22:44:29
Funkcja: main
cpp>
T.R. Werner, 21 lutego 2016; 20:17