Communicating with the Compiler
Each #pragma directive can vary widely, but most follow a general pattern. The instruction being given is specified by the directive-name. The optional arguments depend on the specific directive and the compiler in use.
header.h
1#pragma directive-name [optional arguments]
Include Once
The old way to ensure the header is included only once is using #ifndef / #define guards. While still widely used and fully portable, it requires boilerplate and manual work.
main.c
config.h
12345678#include <stdio.h> #include "config.h" #include "config.h" // Reinclusion — NO duplication will occur int main() { printf("%s v%s\n", APP_NAME, APP_VERSION); return 0; }
Ensures that a header file is included in the compilation only once, even if it is included multiple times in different places. It is an alternative (and more modern) approach to the traditional #ifndef pattern.
main.c
config.h
12345678#include <stdio.h> #include "config.h" #include "config.h" // Reinclusion — NO duplication will occur int main() { printf("%s v%s\n", APP_NAME, APP_VERSION); return 0; }
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
What is the modern alternative to #ifndef for including headers only once?
Can you give an example of how to use #pragma once in a header file?
Are there any drawbacks to using #pragma once compared to include guards?
Awesome!
Completion rate improved to 5.56
Communicating with the Compiler
Veeg om het menu te tonen
Each #pragma directive can vary widely, but most follow a general pattern. The instruction being given is specified by the directive-name. The optional arguments depend on the specific directive and the compiler in use.
header.h
1#pragma directive-name [optional arguments]
Include Once
The old way to ensure the header is included only once is using #ifndef / #define guards. While still widely used and fully portable, it requires boilerplate and manual work.
main.c
config.h
12345678#include <stdio.h> #include "config.h" #include "config.h" // Reinclusion — NO duplication will occur int main() { printf("%s v%s\n", APP_NAME, APP_VERSION); return 0; }
Ensures that a header file is included in the compilation only once, even if it is included multiple times in different places. It is an alternative (and more modern) approach to the traditional #ifndef pattern.
main.c
config.h
12345678#include <stdio.h> #include "config.h" #include "config.h" // Reinclusion — NO duplication will occur int main() { printf("%s v%s\n", APP_NAME, APP_VERSION); return 0; }
Bedankt voor je feedback!