Preprocessor token math
#include <stdio.h>
#include "dio.h"
void foo3() {
printf("foo 3\n");
}
void foo4() {
printf("foo 4\n");
}
void foo6() {
printf("foo 6\n");
}
void foo7() {
printf("foo 7\n");
}
void foo15() {
printf("foo 15\n");
}
#define concat_(a, b) a##b
#define concat(a, b) concat_(a, b)
#define foo(f, a, b) concat(foo, f##a##_##b)()
int main(void) {
foo(add, 5, 2);
foo(sub, 9, 3);
foo(rem, 3, 5);
foo(mul, 3, 5);
foo(div, 9, 2);
printf("\n");
for(int i = 0; i < 10; ++i) {
for(int j = 0; j < 10; ++j) {
printf("#define add%i_%i %i\n", i, j, i + j);
printf("#define sub%i_%i %i\n", i, j, i - j);
printf("#define mul%i_%i %i\n", i, j, i * j);
if(j != 0) {
printf("#define div%i_%i %i\n", i, j, i / j);
printf("#define rem%i_%i %i\n", i, j, i % j);
} else {
printf("#define div%i_%i %i\n", i, j, 0);
printf("#define rem%i_%i %i\n", i, j, 0);
}
}
}
return 0;
}INFO