Main 方法与教程中的方法不同



所以我从 c++ 开始(我试图用新语言拓宽我的思维),但我遇到了一个小问题,这比我猜的更让我困惑......

使用 Visual Studio Express 2012,我在 C++ 中创建了一个控制台 win32 应用程序,这是我的主要方法:

// TestApp.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

但是,由于我对 c++ 一无所知,我在网上搜索了一些 tut,它们都以不同的方式设置

#include <iostream>
using namespace std;
int main()
{
  cout<<"HEY, you, I'm alive! Oh, and Hello World!n";
  cin.get();
}

// my first program in C++
#include <iostream>
int main()
{
  std::cout << "Hello World!";
}

我尝试输入"std::cout",但它不接受它,有人可以澄清为什么和差异的重要性吗?

main 方法可以带或不带参数来定义。这完全取决于您使用应用程序的目的。

看看这个: https://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage%2Fref%2Fmainf.htm

同样对于您的程序,您需要有一个返回值

// my first program in C++
#include <iostream>
int main()
{
  std::cout << "Hello World!";
  return 0;
}
int _tmain(int argc, _TCHAR* argv[])

(至少我认为是这样)一个仅限 Windows 的库和编译器,具体取决于声明主函数的方式。

绝对没有错的是像这样声明 main:

int main(int argc, char const *argv[])
{
    //do something
    return 0;
}

或者像这样:

int main()
{
    //do something
    return 0;
}

这绝对是合适的C++,您可以普遍使用它。

C++程序可能有两个开头之一:

        int main(int argc, char *argv[])

        int wmain(int argc, wchar_t *argv[])

其中第一个得到它的参数(argv)作为ANSI字符,而第二个得到"宽"字符 - 通常是UTF-16或UTF-32,取决于平台。

Microsoft定义一个框架,以允许您创建可以使用 ANSI 或宽字符编译的代码。

        int _tmain(int argc, TCHAR *argv[])

在幕后,他们有这样的东西:

        #if defined UNICODE
            #define _tmain wmain
            #define TCHAR wchar_t
        #else
            #define _tmain main
            #define TCHAR char
        #endif

它们还具有辅助功能,例如 _tprintf()_tcscpy() .

注意:正如其他人指出的那样,argc 和 argv 参数是可选的,因此您也可以拥有

        int main()

        int wmain()

和(对于Microsoft和兼容的编译器)

        int _tmain()

另请注意,虽然_tmain()不是严格可移植的,但如果您想移植到其他平台,您可以轻松创建自己的#define宏。

相关内容

  • 没有找到相关文章

最新更新