是否应在头文件或 .cpp 源文件中指定 C 函数默认参数值?

新手上路,请多包涵

我对 C++ 有点陌生。我在设置标题时遇到问题。这是来自functions.h

 extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect *);

这是functions.cpp中的函数定义

void
apply_surface(int x, int y, SDL_Surface * source, SDL_Surface *
destination,SDL_Rect *clip = NULL)
{
    ...
}

这就是我在 main.cpp 中使用它的方式

#include "functions.h"
int
main (int argc, char * argv[])
{
    apply_surface(bla,bla,bla,bla); // 4 arguments, since last one is optional.
}

但是,这不会编译,因为 main.cpp 不知道最后一个参数是可选的。我怎样才能使这项工作?

原文由 yasar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 389
1 个回答

您使声明(即在头文件中 - functions.h )包含可选参数,而不是定义( functions.cpp )。

 //functions.h
extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect * clip = NULL);

//functions.cpp
void apply_surface(int x, int y, SDL_Surface * source, SDL_Surface *
destination,SDL_Rect *clip /*= NULL*/)
{
    ...
}

原文由 Luchian Grigore 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题