如何设置与c / c ++中的函数同名的定义?

问题描述

我有一个文档不是很完善的c库,它允许我重写某些功能。但可悲的是没有例子:(

library.h:

#ifndef some_function
uint8_t some_function(void);
#endif

所以我在c ++代码中定义了如下函数

#include "library.h"

extern "C" uint8_t some_function(void) { return 0;}

void main() {
....
}

但是它使用库中定义的代码

下次尝试:

#define some_function
#include "library.h"

uint8_t some_function(void) { return 0;}

导致:

src/main.cpp: error: expected unqualified-id before 'void'
 extern "C" uint8_t some_function(void);

因为函数名称已被定义替换。

有什么建议吗?

解决方法

有什么建议吗?

#define some_function some_function

当然不主张这样做,但应该可以。

也许作者希望允许用户使用不同的名称定义自己的功能。即该宏对您来说意义不大,就象库使用自定义函数名一样。

uint8_t my_function(void) { return 0;}

...

#define some_function my_function
#include "library.h"

如果没有人定义这样的宏,那么作者将定义一个具有相同宏的函数,这样所有调用都将起作用。