c中的内联函数问题

时间:2014-03-26 13:15:38

标签: c windows visual-studio-2010 inline

我在Visual Studio 2010中有一个大型C项目构建。我已经将其中一个函数声明为内联,这种函数更经常被调用。我已将函数pdebug声明为:

void inline pdebug(int debug_mask,int level,char *format,...);
<{1>}中的

及其在同一目录中的debug.h中的定义。

使用此功能的文件debug.c,我已完成pdebug

编译因以下错误而失败:

#include<debug.h>

2 个答案:

答案 0 :(得分:4)

我认为您将代码编译为“C”,Visual Studio仅在C ++中支持inline

来自http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx

  

inline关键字仅在C ++中可用。 __inline和__forceinline关键字在C和C ++中都可用。为了与先前版本兼容,_inline是__inline的同义词。

当然,请查看正确顺序的其他答案。

但是......

你似乎有这个带有可变参数的函数...不建议使用这样的函数(由我来,但我不是这方面的专家),因为根据编译器设置,你的代码会增长到巨大的大小(如果编译器真的决定它会内联这个)。内联对于小函数是完美的,它不是由几个语句组成的。内联大函数可能会产生很大的代码。

答案 1 :(得分:1)

应该是inline void pdebug而不是void inline pdebug