Home »

How can type-insensitive macros be created?

Question ListCategory: cHow can type-insensitive macros be created?
ethanbrown author asked 8 years ago
1 Answers
adamemliy16 author answered 8 years ago

A type-insensitive macro is a macro that performs the same basic operation on different data
types.

This task can be accomplished by using the concatenation operator to create a call to a type-

sensitive function based on the parameter passed to the macro. The following program

provides an example:

#include

#define SORT(data_type) sort_ ## data_type

void sort_int(int** i);

void sort_long(long** l);

void sort_float(float** f);

void sort_string(char** s);

void main(void);

void main(void)

{

int** ip;

long** lp;

float** fp;

char** cp;

sort(int)(ip);

sort(long)(lp);

sort(float)(fp);

sort(char)(cp);

}

This program contains four functions to sort four different data types: int, long, float, and

string (notice that only the function prototypes are included for brevity). A macro named

SORT was created to take the data type passed to the macro and combine it with the sort_

string to form a valid function call that is appropriate for the data type being sorted. Thus, the

string

sort(int)(ip);

translates into

sort_int(ip);

after being run through the preprocessor.

Please login or Register to Submit Answer