C preprocessor directives

Created By: chatGPT

C Preprocessor Directives are commands that give instructions to the C compiler to preprocess the information before actual compilation begins. They are typically used for including files, defining macros, and conditional compilation. Understanding these directives is key to writing efficient and maintainable C code.
One of the most common directives is #include, which is used to include header files in your program. This allows you to make use of libraries and functions that are defined elsewhere. There are two ways to include files: using angle brackets for system header files and quotes for user-defined header files.
#include <stdio.h>
#include "myheader.h"
Macros can be defined using the #define directive. Macros can represent constants or function-like expressions. They help make your code more versatile and easier to change later.
#define PI 3.14
#define SQUARE(x) ((x) * (x))
Conditional compilation is handled by directives such as #ifdef, #ifndef, #if, #else, #elif, and #endif. This allows you to include or exclude certain parts of the code based on specific conditions, which is useful for debugging or platform-specific code.
#ifdef DEBUG
    printf("Debugging mode\n");
#endif
Another important directive is #undef, which is used to undefine a macro that has been previously defined. This can be useful to avoid redefinition errors or to reset a macro to a different value later.
#define MAX 100
#undef MAX
In addition, #pragma directives provide additional information to the compiler to optimize the compilation process. They are often used to control compiler-specific behavior and can vary from one compiler to another.
#pragma once
By using these C Preprocessor Directives, you can significantly enhance the flexibility and organization of your code. They help in managing complexity and improving code readability across larger projects.
Introduction And SetupVariablesData TypesIntFloatDoubleCharVoidUnsignedSignedConstantsEnumerationsArraysStringsStructsUnionsTypedefsPointersDynamic Memory AllocationMallocCallocReallocFreeFunctionsFunction DeclarationsFunction DefinitionsFunction CallsReturn StatementInline FunctionsRecursionHeader FilesPreprocessor DirectivesControl FlowIf StatementElse StatementElse If StatementSwitch StatementCase StatementDefault CaseLoopsFor LoopWhile LoopDo While LoopBreak StatementContinue StatementGoto StatementLabelsOperatorsArithmetic OperatorsRelational OperatorsLogical OperatorsBitwise OperatorsAssignment OperatorsConditional (ternary) OperatorComma OperatorSizeof OperatorData StructuresLinked ListsStacksQueuesTreesGraphsFunction PointersCallbacksMacrosCommentsSingle Line CommentsMulti Line CommentsSyntaxSyntax ErrorsCompilation ErrorsDebuggingStandard Input OutputPrintfScanfFile HandlingFopenFcloseFreadFwriteFprintfFgetsFputsError HandlingErrnoAssertionsExit FunctionExit CodesEvent HandlingSignal HandlingInterrupts