【问题标题】:Main in MFC console app (NOT WinMain, main)MFC 控制台应用程序中的主程序(不是 WinMain,主程序)
【发布时间】:2011-07-21 05:42:48
【问题描述】:

对于一个示例程序,虽然这对我有好处。但我想知道这是怎么回事。

我在创建项目 (VC2008) 时创建了一个启用了“MFC”复选框的控制台应用程序。 它创建了标准的_tmain 实现与AfxWinInit 调用和所有。然后我编写了我的自定义函数 Main 并从 _tmain 本身调用它。

现在只要按 F10 或 F11 开始调试,它就会进入 Main 而不是 _tmain(是的,通过 _tmain 本身) - 如何以及为什么 - 这就是问题所在。

不,我根本没有设置任何项目设置。这是大约 32 位调试版本。

编辑:有趣的是:

#include "stdafx.h"

void Main()
{
    printf("This is custom main");
}

int _tmain(int argc, _TCHAR* argv[])
{
    if(false) // Getting fooled, or fooling us?
        Main();

    return 0;
}

Visual Studio 将 Main 视为入口点,当我使用 F10/F11 开始调试时不执行任何操作 - 因为 false 为假且不允许调用 Main

【问题讨论】:

  • 请发布您的示例代码。
  • 现在无法立即发布代码。下一篇文章见 cmets。
  • 你把Main放在_tmain的什么地方?
  • 我没有设置任何断点 - 我只是按 F11 或 F10 开始调试,它应该从入口点开始。 VS 正在考虑将自定义 Main 作为入口点。
  • 您的Main 是否包含大量代码?否则它可能会被内联并最终成为_main 的第一部分。

标签: c++ windows visual-c++ mfc console


【解决方案1】:

我的测试显示它首先进入_tmain,然后是自定义Main

【讨论】:

  • 签名为:void Main()。呼叫只是“主要”。我没有放置任何断点。
  • 如果不下断点,如何确认入口点不是_tmain?
  • @Yan Cheng CHEOK:Ajay 知道入口点是_tmain,他想知道为什么调试器停在Main 而不是_tmain。看来不仅仅是我误解了阿杰的意思。
  • 我不是说入口点不是 _tmain。我提到过,当我按下 F10/F11 时,VS 就会从自定义 Main 开始调试。调用堆栈显示_tmain 调用Main。没有断点,没有内联。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 2019-07-10
  • 2014-02-11
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多