Is it possible to use a if statement inside #define? There are multiple problems with your macro: it expands to a statement, so you cannot use it as an expression the arguments are not properly parenthesized in the expansion: invoking this macro with anything but variable names or constants will produce problems the arguments are evaluated multiple times: if you invoke the macro with arguments that have side effects, such as SUM_A(a(), b()) or
What is the purpose of the #define directive in C++? 0 in C or C++ #define allows you to create preprocessor Macros In the normal C or C++ build process the first thing that happens is that the PreProcessor runs, the preprocessor looks though the source files for preprocessor directives like #define or #include and then performs simple operations with them
Why use #define instead of a variable - Stack Overflow What is the point of #define in C++? I've only seen examples where it's used in place of a "magic number" but I don't see the point in just giving that value to a variable instead
c++ - static const vs. #define - Stack Overflow Is it better to use static const variables than #define preprocessor? Or does it maybe depend on the context? What are advantages disadvantages for each method?
c++ - What does ## in a #define mean? - Stack Overflow In other words, when the compiler starts building your code, no #define statements or anything like that is left A good way to understand what the preprocessor does to your code is to get hold of the preprocessed output and look at it
c++ - Declaring a function using #define - Stack Overflow The #define version is still a macro The code is expanded at the invocation site It has all the expected problems (with macros) including namespace pollution and unexpected parameter behaviour