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