#if vs #ifndef vs #ifdef

Mi problema es, en primer lugar, comprender#ifndef y#ifdef. También quiero entender la diferencia entre#if, #ifndef y#ifdef. Entiendo que#if es básicamente una declaración if. Por ejemplo:

#include<iostream>
#define LINUX_GRAPHICS 011x101

int main(){
 long Compare = LINUX_GRAPHICS;
 #if Compare == LINUX_GRAPHICS
   std::cout << "True" << std::endl;
 #endif
}

Pero los demás, aunque leo sobre ellos, no puedo comprenderlos. También parecen términos muy similares, pero dudo que funcionen de manera similar. La ayuda sería muy apreciada.

Respuestas a la pregunta(5)

Su respuesta a la pregunta