Embedding preprocessor directive into function name

user2826084

I want to embed a preprocessor directive into a function name. Basically I want to make a macro that takes a preprocessor define as argument and concatenates it's defined VALUE to get a function name.

Basically this:

#define PREFIX foo
#define CALL(P, x) _##P_bar(x)

...then 
CALL(PREFIX, x) should become _foo_bar(x)

Unfortunately this results in _P_bar instead of _foo_bar.

Is it possible to make it work as above?

Marian

The C standard defines special behavior for macro parameters immediately preceded and followed by ## operator. In such case they are not fully expanded. This is why your code did not behave as you expected. To further expand a parameter, you have to use it in a way that it is not immediately preceded or followed by ## operator. Try the following:

#define PREFIX foo
#define CALL2(P,x) _##P##_bar(x)
#define CALL(P, x) CALL2(P,x)

CALL(PREFIX, x) 

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Embedding preprocessor directive into function name

From Dev

Is a bad practice mixing function code with preprocessor directive?

From Dev

Pass a function-pointer name to C Preprocessor

From Dev

Is this preprocessor directive acceptable here?

From Dev

preprocessor directive in nuget library

From Dev

Using #undef preprocessor directive

From Dev

Unity Preprocessor Directive Error?

From Dev

Is it possible to typedef a preprocessor directive?

From Dev

Preprocessor directive Impossible define or cancel defining the preprocessor

From Dev

Why define a function prototype, then preprocessor macro with the same name?

From Dev

Preprocessor directive: Why Identifier for header file with #define is not same as header file name

From Dev

angularjs: is it possible to access directive name from self directive compile function?

From Dev

Shell Script with C Preprocessor directive

From Dev

Incorrect preprocessor directive error of IF operator

From Dev

Preprocessor directive for certain address space

From Dev

C preprocessor and "_asm _emit" directive

From Dev

Custom preprocessor directive in C#

From Dev

Preprocessor directive (define) not found by compiler

From Dev

Arrow function eval preprocessor

From Dev

Preprocessor Definition in function parameter

From Java

What does ## (double hash) do in a preprocessor directive?

From Dev

#if preprocessor directive doesn't always collapse

From Dev

Do preprocessor directive if-elses behave normally?

From Dev

Warning with having apostrophe in #error preprocessor directive

From Dev

unexpected tokens following preprocessor directive - expected a newline

From Dev

How to define Preprocessor Directive Global in c#

From Dev

Do preprocessor directive if-elses behave normally?

From Dev

preprocessor directive #define doesn't work in .Xresources

From Dev

unexpected tokens following preprocessor directive - expected a newline

Related Related

  1. 1

    Embedding preprocessor directive into function name

  2. 2

    Is a bad practice mixing function code with preprocessor directive?

  3. 3

    Pass a function-pointer name to C Preprocessor

  4. 4

    Is this preprocessor directive acceptable here?

  5. 5

    preprocessor directive in nuget library

  6. 6

    Using #undef preprocessor directive

  7. 7

    Unity Preprocessor Directive Error?

  8. 8

    Is it possible to typedef a preprocessor directive?

  9. 9

    Preprocessor directive Impossible define or cancel defining the preprocessor

  10. 10

    Why define a function prototype, then preprocessor macro with the same name?

  11. 11

    Preprocessor directive: Why Identifier for header file with #define is not same as header file name

  12. 12

    angularjs: is it possible to access directive name from self directive compile function?

  13. 13

    Shell Script with C Preprocessor directive

  14. 14

    Incorrect preprocessor directive error of IF operator

  15. 15

    Preprocessor directive for certain address space

  16. 16

    C preprocessor and "_asm _emit" directive

  17. 17

    Custom preprocessor directive in C#

  18. 18

    Preprocessor directive (define) not found by compiler

  19. 19

    Arrow function eval preprocessor

  20. 20

    Preprocessor Definition in function parameter

  21. 21

    What does ## (double hash) do in a preprocessor directive?

  22. 22

    #if preprocessor directive doesn't always collapse

  23. 23

    Do preprocessor directive if-elses behave normally?

  24. 24

    Warning with having apostrophe in #error preprocessor directive

  25. 25

    unexpected tokens following preprocessor directive - expected a newline

  26. 26

    How to define Preprocessor Directive Global in c#

  27. 27

    Do preprocessor directive if-elses behave normally?

  28. 28

    preprocessor directive #define doesn't work in .Xresources

  29. 29

    unexpected tokens following preprocessor directive - expected a newline

HotTag

Archive