我正在尝试为C创建C函数 Package 器,我的目标是使它们内联。互联网上所有的解决方案都说,当在库中创建内联函数时,只需将函数定义放在头文件中。但在这种情况下,这将不起作用,因为函数包含只能在C中编译的代码。
此示例演示了以下情况:
// box_c.cpp
#include "box.h"
extern "C" Square *new_Square(int width, int height){
return new Square(width, height);
}
// box_c.h
void *new_Square(int width, int height);
// main.c
#include "box_c.h"
int main(void){
void *s = new_Square(5, 5);
}
在这种情况下,是否可以使new_Square
内联?( Package 器是一个静态库)。
2条答案
按热度按时间4ktjp1zp1#
内联意味着源代码的编译器需要在某种程度上理解它。C编译器不理解C++
new
。你不能这样做。让它不内联,这样代码的编译版本就可以被链接,而编译器不需要在本地理解C++。如果代码(库和最终的可执行文件)是在启用LTO的情况下编译的,那么链接器可能会在此时内联代码,但这并不能保证。
tct7dpnv2#
显然,一般情况下,你不能在C代码中内联C++代码,它们是两种不同的语言。
所以要么