链接时不包括宏定义

时间:2015-01-13 20:00:04

标签: c++ c gcc linker

我在.c文件中使用以下代码,然后我正在创建库文件。

#define abc void printa()\ 
{\
  printf("a");\
}

在我使用abc函数之上的其他一些文件中。但是,当我链接两个文件时,它不会打印。

如果我在宏定义中使用它有一些东西,它将不会包含在库文件(.a文件)中。

1 个答案:

答案 0 :(得分:3)

宏定义abc

#define abc void printa()\ 
{\
  printf("a");\
}

从链接器中看不到。 CPP预处理器只是用

替换任何出现的abc
void printa() 
{
   printf("a");
}

如果您希望链接器可以看到函数,请为它们提供声明和定义,如

void abc() {
   printf("a");
}