Bedankt voor je uitleg alleen begrip ik nog niet wat een define naam constructie voor zin heeft?
Wat het in jouw stukje code doet weet ik niet omdat ik de ganse code niet voor mij heb. Met het voorbeeld wat ik gaf dan maar...
Als jouw project uit een ganse reeks source files (.c of .cpp) bestaat is de kans zeer groot dat bepaalde header-files (.h) in verschillende van deze source files worden geïncludeerd. Om dubbel werk te vermijden (wat altijd onnodig is, hoe ben je zelf...), moet er een manier zijn om na te gaan of een welbepaalde header-file reeds in het project is geïncludeerd. Dit gebeurt dus door na te gaan of een desbetreffende identifier reeds elders in jouw project gedefinieerd is.
In mijn voorbeeld wordt dit gecontroleerd met de identifier "_WINUSER_H". Als de header file "winuser.h" ergens wordt geïncludeerd, wordt volgend stukje code uitgevoerd:
De identifier "_WINUSER_H" is dan gedifinieerd; de compiler kent deze identifier nu.
Als in een andere source file in dit project, nogmaals de header-file "winuser.h" wordt geïncludeerd, dan merkt de compiler dat "_WINUSER_H" reeds is gedefinieerd, en voert hij dus het stukje code
Code: Selecteer alles
#ifndef _WINUSER_H
#define _WINUSER_H
#if __GNUC__ >= 3
#pragma GCC system_header
#endif
niet meer uit. De regels tussen "#ifndef" en "#endif" voert hij dus slechts uit als de desbetreffende identifier nog niet gedefinieerd is (#ifndef = if not defined...).
Hopelijk is het nu wat duidelijker? Dit is natuurlijk zeer "vrij" uitgelegd. Op internet is er vast een gedetailleerdere uitleg terug te vinden
.