1.名字空间的使用
老问题了,还是写出来,cout之类的函数不能直接使用了,要加上# include <iostream> using namespace std;加上全局名字空间 或在函数前加上std::,其中注意# include <iostream> 不要写成# include <iostream.h> , #include<iostream> // 这个就是1998年标准化以后的标准头文件 #include<iostream.h> // 这个就是标准化以前的头文件保留 iostream.h 是为了与以前的相兼容,现在不予推荐使用 另外, iostream里的内容, 在iostream.h就不一定有。
2.建立空项目导致不能调试
典型错误:“没有为任何调用堆栈框架加载任何符号。无法显示源代码。”/“未生成调试信息。。。未使用调试信息生成二进制文件”
其实问题在于,在空项目中不生成调试文件pdb,所以无法调试。
要让项目生成pdb文件,需要更改:
项目属性,configuration properties->linker->Generate Debug Info 从 no 改为 yes
但这样还是不够的,还需要更改:
项目属性,configuration properties->c/c++->debug information format为/ZI
项目属性,configuration properties->c/c++->optimization为Disabled
改了第一处就可以分步执行了 但是断点打不上
对应于中文版就是
连接器/调试/生成调试信息
c/c++/常规/调试信息格式
c/c++/优化/优化
3.#include "stdafx.h"
假如生成控制台应用程序之类,修改cpp文件时要特别注意#include "stdafx.h"应该是所有cpp文件的第一句话,如果你在他之前加了一些其它的#include 很可能会是无效的,因为使用了预编译,所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。因此,所有的CPP实现文件第一条语句都是:#include "stdafx.h"。
不想使用预编译可以修改配置属性/c/c++/预编译头(不推荐)