在VS2017中新建一个C++项目:
文件->新建->项目->Visual C++->Windows桌面->Windows控制台应用程序->名称和位置->确定。
"stdafx.h"头文件全称“StandardApplication Framework Extensions”,指的是标准程序框架的扩展。
以下摘自百度百科:
预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。
编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include"stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。
因此,所有的MFC实现文件第一条语句都是:#include "stdafx.h"。在它前面的所有代码将被忽略,所以其他的头文件应该在这一行后面被包含。否则,你将会得到“No such file or directory”这样让你百思不得其解的错误提示。
程序代码:
//HelloWorld.cpp: 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <iostream>
//using namespace std;
using std::cin;
using std::cout;
usingstd::endl;
int main()
{
cout << "HelloWorld!" << endl;
return 0;
}
以下转自知乎文章《为什么尽量不要使用using namespace std?》
作者:知乎用户
链接:https://www.zhihu.com/question/26911239/answer/51503880
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
《C++ Primer Plus (第六版 中文版 人民邮电出版社)》第九章:内存模型和名称空间 第328页:
"有关using编译命令和using声明,需要记住的一点是,他们增加了名称冲突的可能性。"
《C++ Primer Plus (第六版中文版 人民邮电出版社)》第九章:内存模型和名称空间 第329页:
一般说来,使用using命令比使用using编译命令更安全,这是由于它只导入了制定的名称。如果该名称与局部名称发生冲突,编译器将发出指示。using编译命令导入所有的名称,包括可能并不需要的名称。如果与局部名称发生冲突,则局部名称将覆盖名称空间版本,而编译器并不会发出警告。另外,名称空间的开放性意味着名称空间的名称可能分散在多个地方,这使得难以准确知道添加了哪些名称。
...
然而名称空间的支持者希望有更多的选择,既可以使用解析运算符面也可以使用using声明,也就是说,不要这样做:
using namespace std; // avoid as too indiscriminate(随意)
而应这样做
int x;
std::cin >> x ;
std::cout << x << std::endl;
或者这样做
using std::cin;
using std::cout;
using std::endl;
int x;
cin >> x;
cout << x << endl;
【补充】:在之后的学习中,出现了无法找到swap函数的问题(另一个程序),尝试多种方法无效(包括库文件、大小写等),后将using std::cin;
using std::cout;
using std::endl;
注释掉,并换为using namespace std后,可正常运行,具体原因未知,欢迎知晓原因的解惑...
按Ctrl+F5,运行结果如下: