为什么在Mingw中设置sdl时必须在主要函数中传递参数?

Shubham Tanwar

这些参数有什么用?还有其他方法可以在不使用main参数的情况下运行SDL吗?

int main( int argc, char* args[] )
黑猫

让我解释。

在通常的程序中,您可以使用以下两种有效形式之一main

int main()

int main(int argc, char **argv) // arguments' names do not matter here

它们之间的区别是第二种形式允许您的程序接受命令行参数。


但是SDL使用了一种特殊的 main 相关技巧。

SDL#define main SDL_main在标头中某处。
因此,预处理器将替换int main(...)int SDL_main(...)

实际main()位于SDL代码中的某个位置。它会进行一些初始化,然后调用您的“ main”(即SDL_main)。

实际main()可能看起来像这样:

extern SDL_main(int, char **);

int main(int argc, char **argv)
{
    // SDL initialization
    SDL_main(argc, argv);
}

它说明了为什么可以使用int main()SDL源没有原型,int SDL_main()因为C不支持函数重载。只能有一个原型SDL_main,SDL开发人员决定应该这样做int SDL_main(int, char **)

这样做的原因很明显:许多应用程序都需要使用命令行参数。许多程序员习惯于int main(int, char **)在要读取命令行参数时使用它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么传递参数时必须在addeventlistener中具有匿名函数?

来自分类Dev

为什么无参数结构构造函数必须在C#6中公开?

来自分类Dev

重新连接时,为什么必须在tmux中重新设置环境变量?

来自分类Dev

为什么必须在function()中包含对函数的调用

来自分类Dev

为什么必须在Java中子类的参数化构造函数中调用父类的参数化构造函数?

来自分类Dev

在Swift函数中,当函数在循环中包含带if语句的for循环时,为什么“ return”必须在for循环之外?

来自分类Dev

为什么我必须在React的匿名函数中包装onClick属性的函数?

来自分类Dev

为什么在 Python 中调用父方法时必须传递 self 参数?

来自分类Dev

为什么HTTP PUT请求必须在URL(以及请求正文)中传递实体密钥?

来自分类Dev

在angular2中动态加载组件时,为什么必须在容器中写入目标?

来自分类Dev

如何减少必须在Haskell中传递的参数数量?

来自分类Dev

如何减少必须在Haskell中传递的参数数量?

来自分类Dev

为什么我必须在onCreateView中返回视图而不是直接设置视图?

来自分类Dev

ansible角色:为什么必须在etckeeper中设置user.email?

来自分类Dev

为什么必须在模板中每个函数上方声明模板?

来自分类Dev

因为什么时候必须在Java中包含一个空的构造函数?

来自分类Dev

JavaScript:为什么我必须在表中单击两次以执行colorActiveLine函数?

来自分类Dev

为什么我必须在fold中写下匿名函数的返回类型

来自分类Dev

为什么必须在模板中每个函数上方声明模板?

来自分类Dev

node.js回调是否必须在nonce函数中?如果是这样,为什么?

来自分类Dev

为什么必须在onChanged(在Flutter中)中调用didChange?

来自分类Dev

ReactiveUI:使用TestScheduler时,为什么必须在“ ... Throttle ...”中显式指定调度程序

来自分类Dev

使用扫描仪读取文件时,为什么扫描仪必须在方法中?

来自分类Dev

为什么必须在C ++类定义中声明方法?

来自分类Dev

为什么我必须在onLoaderReset中交换swapCursor(null)?

来自分类Dev

为什么必须在最终声明中声明列表

来自分类Dev

为什么必须在子类中重新声明PoolDictionaries?

来自分类Dev

为什么必须在onCreate中初始化对象?

来自分类Dev

为什么必须在类中调用_internal()?

Related 相关文章

  1. 1

    为什么传递参数时必须在addeventlistener中具有匿名函数?

  2. 2

    为什么无参数结构构造函数必须在C#6中公开?

  3. 3

    重新连接时,为什么必须在tmux中重新设置环境变量?

  4. 4

    为什么必须在function()中包含对函数的调用

  5. 5

    为什么必须在Java中子类的参数化构造函数中调用父类的参数化构造函数?

  6. 6

    在Swift函数中,当函数在循环中包含带if语句的for循环时,为什么“ return”必须在for循环之外?

  7. 7

    为什么我必须在React的匿名函数中包装onClick属性的函数?

  8. 8

    为什么在 Python 中调用父方法时必须传递 self 参数?

  9. 9

    为什么HTTP PUT请求必须在URL(以及请求正文)中传递实体密钥?

  10. 10

    在angular2中动态加载组件时,为什么必须在容器中写入目标?

  11. 11

    如何减少必须在Haskell中传递的参数数量?

  12. 12

    如何减少必须在Haskell中传递的参数数量?

  13. 13

    为什么我必须在onCreateView中返回视图而不是直接设置视图?

  14. 14

    ansible角色:为什么必须在etckeeper中设置user.email?

  15. 15

    为什么必须在模板中每个函数上方声明模板?

  16. 16

    因为什么时候必须在Java中包含一个空的构造函数?

  17. 17

    JavaScript:为什么我必须在表中单击两次以执行colorActiveLine函数?

  18. 18

    为什么我必须在fold中写下匿名函数的返回类型

  19. 19

    为什么必须在模板中每个函数上方声明模板?

  20. 20

    node.js回调是否必须在nonce函数中?如果是这样,为什么?

  21. 21

    为什么必须在onChanged(在Flutter中)中调用didChange?

  22. 22

    ReactiveUI:使用TestScheduler时,为什么必须在“ ... Throttle ...”中显式指定调度程序

  23. 23

    使用扫描仪读取文件时,为什么扫描仪必须在方法中?

  24. 24

    为什么必须在C ++类定义中声明方法?

  25. 25

    为什么我必须在onLoaderReset中交换swapCursor(null)?

  26. 26

    为什么必须在最终声明中声明列表

  27. 27

    为什么必须在子类中重新声明PoolDictionaries?

  28. 28

    为什么必须在onCreate中初始化对象?

  29. 29

    为什么必须在类中调用_internal()?

热门标签

归档