Используйте директиву препроцессора ifdef/else для условной компиляции
Лучше менять содержимое функции, но можно убирать целые функции
Благодарю за совет, работает
#include <stdio.h>
#include <string.h>
#define PRO
#ifdef PRO
int pro_version(){
printf("THIS IS PRO VERSION\n");
return 0;
}
#endif
#ifdef FREE
int free_version(){
printf("THIS IS FREE VERSION\n");
return 0;
}
#endif
int main() {
#ifdef PRO
pro_version();
#endif
#ifdef FREE
free_version();
#endif
return 0;
}
(gdb) disass pro_version
Dump of assembler code for function pro_version:
0x0000000000401112 <+0>: push %rbp
0x0000000000401113 <+1>: mov %rsp,%rbp
0x0000000000401116 <+4>: mov $0x402004,%edi
0x000000000040111b <+9>: callq 0x401030 <puts@plt>
0x0000000000401120 <+14>: mov $0x0,%eax
0x0000000000401125 <+19>: pop %rbp
0x0000000000401126 <+20>: retq
End of assembler dump.
(gdb) disass free_version
No symbol "free_version" in current context.