它的工作方式就是这样,你将只有一个函数的定义,说它是函数int add(int x, int y);
然后你定义它main.c
主.c:
int add(int x, int y)
{
return x + y;
}
那么如果你想在另一个c文件中使用它,你只需要这个
测试.c
int add(int x, int y); /* just a declaration, a function prototype */
int addWrapper(int x, int y)
{
return add(x, y);
}
像这样编译
gcc -Wall -Werror main.c test.c -o some_output_file_name
链接器将负责查找函数定义。
如果函数未在任何编译文件中定义,则
Undefined reference to `int add(int x, int y);' in ...
将发出错误。
如果要强制编译器插入函数体,那么自己插入函数体,使用预处理宏
头文件.h
#define add(x,y) ((x) + (y))
接着
#include "header.h"
int addWrapper(int x, int y)
{
return add(x, y);
}
将替换add(x, y)
为x + y
.
如果函数返回void
,那么一个不错的技巧就是使用它
#define inlinedFunction(parameters) \
do { \
/* function body here */ \
} while (0)
您应该在宏定义的每一行末尾添加一个连续的反斜杠。