在vs2010中编译一个普通的C++程序(Win32 Console Application),都会出现这两个错误!

究其原因是:我们已经习惯了VC6的种种简陋和不规范!

例如,下列程序在VC6中编译通过。

主程序:testCir2.cpp

// testCir2.cpp : Defines the entry point for the console application.
//#include "stdafx.h"#include "circular.h"
#include <stdlib.h>
#include <iostream.h>int main(int argc, char* argv[])
{const double Pi = 3.14;double dRadius = 3;if (argc > 1) {dRadius = atof(argv[1]);}cout<<"你输入的半径为: "<<dRadius<<endl;Circular *circular = new Circular(Pi);double dArea = circular->getArea(dRadius);cout<<"面积为:"<<dArea<<endl;double dCircumference = circular->getCircumference(dRadius);cout<<"周长为:"<<dCircumference<<endl;return 0;
}

但是在vc10中就会出现:

1. C2664: 'atof' : cannot convert parameter 1 from '_TCHAR *' to 'const char *'

dRadius = atof(argv[1]); // vc6 // C2664: 'atof' : cannot convert parameter 1 from '_TCHAR *' to 'const char *'

原因是:VC10中使用了unicode定义的变量;我们的MBCS定义的函数无法进行转换工作。

Generic-Text Routine Mappings

TCHAR.H routine

_UNICODE & _MBCS not defined

_MBCS defined

_UNICODE defined

_tstof

atof

atof

_wtof

_ttof

atof

atof

_wtof

更改为:

dRadius = _wtof(argv[1]);

即可解决C2664错误。

2. C2065: 'cout' : undeclared identifier

C2065: 'endl' : undeclared identifier

我们经常使用的cout和endl怎么变成了不识别的了?

原因是:VC10给标准函数使用了命名空间。

解决方法有2种:
        (1) 强制使用命名空间

using namespace std;

(2) 在标准函数前加前缀

std::cout<<"你输入的半径为: "<<dRadius<<std::endl;

最后,要注意引用的不同:

VC6:

#include <stdlib.h> // vc6 - atof()
#include <iostream.h> // vc6 - cout // vc6 - endl

VC10:

// vc10 - cout & endl
using namespace std;
#include <iostream>

--------------------------------------------------------------xiaobin_hlj80--------------------------

附:类文件

头文件:circular.h

// circular.h: interface for the Circular class.
//
//#if !defined(AFX_CIRCULAR_H__612399AD_E8A7_433A_BD63_6C1F29BAC83E__INCLUDED_)
#define AFX_CIRCULAR_H__612399AD_E8A7_433A_BD63_6C1F29BAC83E__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class Circular
{
public:Circular(double pi);virtual ~Circular();double PI;double getArea(double radius);double getCircumference(double radius);};#endif // !defined(AFX_CIRCULAR_H__612399AD_E8A7_433A_BD63_6C1F29BAC83E__INCLUDED_)

源文件:circular.cpp

// circular.cpp: implementation of the Circular class.
//
//#include "stdafx.h"
#include "circular.h"//
// Construction/Destruction
//
Circular::Circular(double pi)
{PI = pi;
}Circular::~Circular()
{}double Circular::getArea(double radius) {return PI * (radius * radius);
}double Circular::getCircumference(double radius) {return PI * (radius * 2);
}

转载于:https://www.cnblogs.com/pangblog/p/3339546.html

vc10的C2664和C2065错误相关推荐

  1. c2664错误c语言,vc10的C2664和C2065错误

    在vs2010中编译一个普通的C++程序(Win32 Console Application),都会出现这两个错误! 究其原因是:我们已经习惯了VC6的种种简陋和不规范! 例如,下列程序在VC6中编译 ...

  2. 关于error C2065 错误

    今天在学习C++Primer PLUS 第十章,在实践其中关于股票的代码时,编译时总出现error C2065错误,让人莫名其妙,最终参考了http://blog.sina.com.cn/s/blog ...

  3. Error C2065 'cout': undeclared identifier

    1 [问题背景]C++/MFC中出现 Error    C2065错误,即未定义xxx错误,而你使用的xxx是基础类库的,你心里想不可能不存在呀.当然排除你拼写错误的情况,咱不讨论这种情况. 2 [分 ...

  4. c语言中错误c2062,C/C++编译器错误消息大全

    C/C++编译器错误消息大全 初始值设定项可能括在了括号中.为避免该问题,请将声明符括在括号中或使其成为 typedef. 在编译器将表达式作为类模板参数检测时也可能导致此错误;使用 typename ...

  5. 【c/c++问题总结】error C2039、 C2001、 C2146、C2297、 C2601、C2065、 C2660、 C2440

    目录 #重点 问题一:error C2039 错误重现: 错误原因: 问题二:error C2001 错误重现: 错误原因: 问题三:error C2146 错误一: 错误原因: 真正的错误原因: 错 ...

  6. Windows_Program_Via_C_Translate_Win32编程的背景知识/基础知识_包括基本输入输出机制介绍...

    Some Basic Background Story of The Win32 APIs Win32 API背景故事/背景知识 The Win32 application programming i ...

  7. C/C++编译器错误代码大全

    编译器错误 C2001  错误消息                           常数中有换行符                           字符串常数不能继续到第二行,除非进行下列操作 ...

  8. 包含Iphlpapi.h 编译错误 error C2065: 'HRASCONN'

    今天在写一个获取网络连接的程序,其中用到了GetTcpTable函数,这个函数的声明在Iphlpapi.h #include <Iphlpapi.h> #include <Winso ...

  9. MFC 错误异常,用vs添加资源并为资源定义类后报错:error C2065 : 未声明的标识符...

    添加了一个Dialog资源,修改了ID之后右击资源添加了一个类,在类里面有一个成员变量: // 对话框数据     enum { IDD = IDD_GETIN }; 而在编译过程中出现报错,错误代号 ...

  10. VS2019 莫名其妙出现: C2059 语法错误:“}“,C2143 语法错误:缺少“;“(在“}“的前面),C2065 未定义标识符,C2039 不是““的成员等

    一.问题 VS2019 莫名其妙出现: C2059 语法错误:"}" C2143 语法错误:缺少";"(在"}"的前面) C2447     ...

最新文章

  1. Visual Studio Code 配置 Markdown
  2. java 枚举高级应用_【后端】java基础(5.6)java高级基础之枚举
  3. IOS UI开发基础之超级猜图完整版本-08
  4. 插件不既有Chrome版也有飞鸽传书
  5. java 分层领域模型_Java领域模型 | 学步园
  6. Javascript中的null、undefined、NaN
  7. 高并发下如何缩短响应时间?
  8. strcat与strncat的C/C++实现
  9. 命令级的python静态资源服务。
  10. QOpenGLWight与QPainter混合渲染
  11. spec.ports[0].name: Required value
  12. 来来来,咱们聊一下 JWT。安全验证的知识 两篇文章就够了
  13. Android 微信分享视频缩略图不显示问题
  14. 泰坦以太(以太流说) titan_ysl 2020.01.27
  15. qq看点模块测试用例
  16. MySQL基础数据类型
  17. 里加一列为1_风味人间2:大厨做的拔丝苹果,拉丝1米长,根根分明
  18. [转]关于计算机研究生报考方向的简要介绍
  19. 可视化系列讲解:css2.5D动画->帧动画
  20. 对 Android 重力感应器的初步认识

热门文章

  1. 已有一个名为“frmadd”的组件。组件的名称必须是唯一的,而且名称必须不区分大小
  2. windows server 2012无法安装NET.framework3.5解决方法
  3. 解决IIS7.5及以后中URL文件名有加号或空格导致显示404错误的问题
  4. 解决fabric编译失败(make: *** [release/linux-amd64/bin/configtxgen] Error 1)
  5. java byte转十六进制_Python 十六进制hexbytesstr之间的转换和Bcc码的生成
  6. springmvc配置servlet
  7. vb6 由于超出容量限制 不能创建新事务_Executors类创建四种常见线程池
  8. stringbuffer java API_StringBuffer类
  9. Javascript特效:tab标签
  10. 面向对象(Python):学习笔记之封装