The role of #ifdef and #ifndef

Text inside an ifdef/endif or ifndef/endif pair will be left in or removed by the pre-processor depending on the condition. ifdef means “if the following is defined” while ifndef means “if the following is not defined”. So: #define one 0 #ifdef one printf(“one is defined “); #endif #ifndef one printf(“one is not defined “); #endif … Read more

How to define a preprocessor symbol in Xcode

Go to your Target or Project settings, click the Gear icon at the bottom left, and select “Add User-Defined Setting”. The new setting name should be GCC_PREPROCESSOR_DEFINITIONS, and you can type your definitions in the right-hand field. Per Steph’s comments, the full syntax is: constant_1=VALUE constant_2=VALUE Note that you don’t need the ‘=’s if you … Read more

How to compare strings in C conditional preprocessor-directives

I don’t think there is a way to do variable length string comparisons completely in preprocessor directives. You could perhaps do the following though: #define USER_JACK 1 #define USER_QUEEN 2 #define USER USER_JACK #if USER == USER_JACK #define USER_VS USER_QUEEN #elif USER == USER_QUEEN #define USER_VS USER_JACK #endif Or you could refactor the code a … Read more

Pragma in define macro

If you’re using c99 or c++0x there is the pragma operator, used as _Pragma(“argument”) which is equivalent to #pragma argument except it can be used in macros (see section 6.10.9 of the c99 standard, or 16.9 of the c++0x final committee draft) For example, #define STRINGIFY(a) #a #define DEFINE_DELETE_OBJECT(type) \ void delete_ ## type ## … Read more

Indenting #defines

Pre-ANSI C preprocessor did not allow for space between the start of a line and the “#” character; the leading “#” had to always be placed in the first column. Pre-ANSI C compilers are non-existent these days. Use which ever style (space before “#” or space between “#” and the identifier) you prefer. http://www.delorie.com/gnu/docs/gcc/cpp_48.html

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)