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