Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在c/c+中设置与函数同名的定义+;?_C++_C_C Preprocessor - Fatal编程技术网

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

C++ 如何在c/c+中设置与函数同名的定义+;?,c++,c,c-preprocessor,C++,C,C Preprocessor,我有一个没有很好文档的c库,它允许我重写一些函数。但遗憾的是,没有这样的例子:( 图书馆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() { .... } 但它使用库中定

我有一个没有很好文档的c库,它允许我重写一些函数。但遗憾的是,没有这样的例子:(

图书馆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替换

有什么建议吗

有什么建议吗

#定义一些函数一些函数
当然,这不是提倡的,但它应该是有效的

也许作者想让用户用不同的名称定义自己的函数。也就是说,宏对您的意义不如库使用自定义函数名称

uint8_t my_函数(void){返回0;}
...
#定义一些函数我的函数
#包括“library.h”

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

为什么需要这样做?你只是好奇,还是在寻找XY问题?它是在我必须使用的库中以这种方式实现的。它可以工作。它使令牌也可用于预处理器。我已经看到它在另一个方向h中使用欧维弗(致OP),其中它充当函数的一种功能测试宏。在我在CMake文件中定义后,它工作了。仅将定义添加到main.cpp是不够的。@Steve如果库本身是CMake项目,或者如果它包含在多个翻译单元中,则可能会发生这种情况。CMake是放置这些项目范围的宏的正确位置。