所以我从 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
宏。