gcc 4.4.2 c89
Я перепроектировал некоторый код в c89. Однако я полностью запутался в коде, который использует следующие #defines. Поэтому я создал небольшое приложение, которое, возможно, я бы лучше понял, как это работает.
Из того, что я могу собрать, MODULE_API передаст имя функции и вызовет макрос MODULE_SOURCE_API и объединит name и func. Поэтому я создал простую функцию с именем print_name и запустил код. Я получил следующие сообщения об ошибках:
implicit declaration of function ‘print_name’
undefined reference to `print_name'
Какая главная причина для этого?
#include <stdio.h>
#define MODULE_SOURCE_API(name, func) name##_##func
#define MODULE_API(func) MODULE_SOURCE_API(mod_print, func)
void MODULE_API(print_name)(const char const *name);
int main(void)
{
printf("=== Start program ===\n");
print_name("Joe bloggs");
printf("== End of program ===\n");
return 0;
}
void MODULE_API(print_name)(const char const *name)
{
printf("My name is [ %s ]\n", name);
}
Большое спасибо за любой совет,
РЕДАКТИРОВАТЬ ====
Я только что сделал исправление, я должен звонить
MODULE_API(print_name)("Joe Bloggs");
Но как я могу распечатать, каков будет результат объединения? И с чем это связано?
Большое спасибо,