preprocessor

Adding default arguments to variadic macro

Hi, Is it possible to add default arguments before variable argument in variadic macro? e.g I have the version of macro something like #define MACRO(arg1, ...) func(arg1, ##__VA_ARGS__) I would like to add 2 more default arguments in the macro before variable arguments so that it should not affect previous version. Like: #define MAC...

how to compare string in C conditional preprocessor-directives

i have to do something like this in C but it works only if I use a char but I need a string how can I do? #define USER "jack" // jack or queen #if USER == "jack" #define USER_VS "queen" #elif USER == "queen" #define USER_VS "jack" #endif thanks to all! ...

Preprocessor syntax to use an #define as an identifier (function name) and a string

I'm not sure if this is possible, but I would like to create a shared object file and I would like to make it easy to use by having a #define that can be used to dereference the function names. In libfoo.h #define FOO_SO_FUNCTION_A aFunction In libfoo.so #include "libfoo/libfoo.h" extern "C" int FOO_SO_FUNCTION_A( void ) { ....

Is it possible to modify source code with ant?

I would like to do conditional compilation in a program of mine. I know that if you declare a public static final boolean the compiler will ignore the branch that is not traversed. Is it possible to have an ant target change a variable before building the program? For example if I have: final public static boolean windows = false; ...

Documenting preprocessor defines in Doxygen

Is it possible to document preprocessor defines in Doxygen? I expected to be able to do it just like a variable or function, however the Doxygen output appears to have "lost" the documentation for the define, and does not contain the define its self either. I tried the following /**My Preprocessor Macro.*/ #define TEST_DEFINE(x) (x*x) ...

Pre-processing !DEC$ directives in gfortran

I've got a large Fortran codebase that originally targeted Intel's compiler. I'm now gearing up to compile with gfortran. Unfortunately, the code is littered with Intel-style pre-processing directives like: !DEC$ IF DEFINED (MYDIRECTIVE) REAL, DIMENSION(:,:,:), ALLOCATABLE :: my_real_var !DEC$ ENDIF From what I can tell via googlin...

C/C++ Macro: How to generate two separate sections of code with one macro (boost preprocessor library?)

Hello all, I'm looking for a method or a way to generate a list of typedefs and a list of object instantiations from a list of macro-invocations, defining the class types and the constructor parameters of these objects. It should look like the (not working) code below. The problem to solve is a way to generate to different lists out of...

Invalid preprocessor token warning message

I have a bunch of generated functions from a supplier's tool are required to be defined by me. Since the inner functionality of each and every one of these functions are exactly the same, I figured I could use a macro to make my life easier. Here is the offending warning: pasting "<function_name>" and "(" does not give a valid preproce...

Class Constants

I have several obj-c classes, each of which require a number of contants that are used in switch statements. I had tried defining these numerical constants in the .m file using the #define preprocessor instruction. All these constants begin with 'kCell'. This seems to work well but Xcode's code sense is presenting me with every 'kCell' ...

Externally Define Preprocessor Macros in GLSL

GLSL has a full C-style preprocessor. The only thing that does not work is #include. One of the great features is that that you can used #ifdef to comment out functions and thus create one shader that can be thinned out if certain features are not used. My Question is: Is there a way to define a macro from C code? There seems no way...

Using Macros to Define Constants for CUDA

I'm trying to reduce the number of instructions and constant memory reads for a CUDA kernel. As a result, I have realised that I can pull out the tile sizes from constant memory and turn them into macros. How do I define macros that evaluate to constants during preprocessing so that I can simply adjust three values and reduce the number...

Why pre-processor gives a space ?

I want to comment a line using the pre-processor: #define open /##* #define close */ main() { open commented line close } when I do $gcc -E filename.c I expected /* commented line */ but I got / * commented line */ so that the compiler shows an error Why it is giving an unwanted space ? ...

Generating DDL (specific to postgres) Scripts Conditionally

My application does not fit into the "general purpose" RDBMS schema category, I do not want a ginormous DDL script -- therefore I would need #include semantics and I will probably have different variants of the scripts therefore I would need #ifdef semantics. Is GNU m4 the way to go ? Or perhaps there are some macro cabilities in psql ...

Additional macro support in clang?

Since LLVM/cLang is especially well designed. This seems like a great opportunity to augment the C/C++ macro/preprocessor system. Does anyone know of additional macro/preprocessor abilities added by Clang or side projects to make the macro system more powerful (like turing complete) Thakns! Note: I am asking about macros. Not C++ ...

Confusion in macro

The following code works fine #define open { #define close } #include<stdio.h> #define int char main() open int a ; printf("This is testing code" ); close But If I exchange the lines #define<stdio.h> #define int char as #define int char #define<stdio.h> it throws lot of errors like this In file included from /usr/in...

Listing C Constants/Macros

Is there a way to make the GNU C Preprocessor, cpp (or some other tool) list all available macros and their values at a given point in a C file? I'm looking for system-specific macros while porting a program that's already unix savvy and loading a sparse bunch of unix system files. Just wondering if there's an easier way than going hun...

Writing preprocessor directives to get string

Can you write preprocessor directives to return you a std::string or char*? For example: In case of integers: #define square(x) (x*x) int main() { int x = square(5); } I'm looking to do the same but with strings like a switch-case pattern. if pass 1 it should return "One" and 2 for "Two" so on.. ...

C, Macro defining Macro

Can you do something like this with a macro in C? #define SUPERMACRO(X,Y) #define X Y then SUPERMACRO(A,B) expands to #define A B I have a feeling not because the preprocessor only does one pass. EDIT Official gcc only. No third-party tools please. ...

How to make the first invocation of a macro different from all the next ones ?

Hi, that may be really simple but i'm unable to find a good answer. How can I make a macro representing first a certain value and then a different one ? I know that's nasty but i need it to implicitly declare a variable the first time and then do nothing. This variable is required by other macros that i'm implementing. Should i levera...

Why I get errors when I try to out a compiler defined macro using a pragma message?

I would like to know why the Visual C++ compiler gets me an warning/error if I use the following code: #pragma message( "You have " _MSC_FULL_VER ) Here is what I get: error C2220: warning treated as error - no 'object' file generated warning C4081: expected ':'; found ')' The problem reproduces for _MSC_FULL_VER or _MSV_VER but no...