可以使用的最简单的方法:

选项Project   |   Configuration   Properties   |   C/C++   |   Preprocessor   |   Preprocessor   Definitions  

  加入_CRT_SECURE_NO_DEPRECATE和_SCL_SECURE_NO_DEPRECATE

以下转自: http://blog.csdn.net/hylaking/archive/2007/07/20/1700475.aspx

一、WINVER

  Compile result:

  WINVER not defined. Defaulting to 0x0502 (Windows Server 2003)



  windows   server   2003 

  winver>=0x0502 

    

  windows   xp   

  winver>=0x0501 

    

  windows   2000 

  winver>=0x0500 

    

  windows   nt   4.0 

  winver>=0x0400 

    

  windows   me 

  winver>=0x0500 

    

  windows   98 

  winver>=0x0410 

    

  windows   95 

  winver>=0x0400

在stdafx.h的开头定义:

0x0501是XP   SP2的

#ifndef   WINVER

#define   WINVER   0x0501

#endif

二、编译警告:warning C4996 与 Security Enhancements in the CRT



将过去的project用VS2005打开的时候。

你有可能会遇到一大堆的警告:warning C4996。

比方:

warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use



_CRT_SECURE_NO_WARNINGS. See online help for details.

warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation,



use _CRT_SECURE_NO_WARNINGS.



原因是Visual C++ 2005使用了更加安全的run-time library routines。

新的Security CRT functions(就是那些带有“_s”后缀的函数):

http://msdn2.microsoft.com/en-us/library/wd3wzwts(VS.80).aspx



那么怎样搞定这些警告呢:

方法一:将原来的旧函数替换成新的Security CRT functions。

方法二:用下面方法屏蔽这个警告。

1.在预编译头文件stdafx.h里(注意:一定要在没有include不论什么头文件之前)定义以下的宏:

  #define _CRT_SECURE_NO_DEPRECATE

2.#param warning(disable:4996)

3.更改预处理定义:

  项目->属性->配置属性->C/C++ -> 预处理器 -> 预处理器定义,添加_CRT_SECURE_NO_DEPRECATE

方法三:方法二没有使用新的更安全的CRT函数。显然不是一个值得推荐的方法,但是你又不想一个一个地改,那么另一个更方便的方法:

  在预编译头文件stdafx.h里(相同要在没有include不论什么头文件之前)定义以下的宏:

  #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1

  在链接的时候便会自己主动将旧函数替换成Security CRT functions。

注意:这种方法尽管使用了新的函数,可是不能消除警告(原因见红字),你还得同一时候用法二。。。

三、link error 1104

原因:当从vc6移植到.net时。会导致这个链接错误!

解决:项目属性->配置属性->链接器->输入->忽略特定库,增加libcd.lib;或直接在命令行中增加: /nodefaultlib:"libcd.lib"

注意:是否是libcd.lib,与C/C++属性中的“代码生成”选项相关

四/

中文VC8的程序猿可能会经常看见这个warning:

warning C4819: 该文件包括不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失.

这个警告没有什么坏影响。但会影响心情:) 所以还是要治理一下:

哪个文件出现这个警告错误,打开它。 用VS2005的查找替换功能。打开同意正則表達式选项,选择当前窗体,查找替换 /n 为 /n ,  然后,这个世界就清净了。

原因: 查找的 /n 是跨平台的回车,替换的 /n 却是当前代码页的回车了。

參考:



Security Enhancements in the CRT :

http://msdn2.microsoft.com/en-us/library/8ef0s5kh(VS.80).aspx

Secure Template Overloads :

http://msdn2.microsoft.com/en-us/library/ms175759(VS.80).aspx

删除: warning C4996: 'sprintf': This function or variable may be unsafe. Consider 方法的更多相关文章

  1. error C4996: 'sprintf': This function or variable may be unsafe.

    error C4996: 'sprintf': This function or variable may be unsafe.   error C4996: 'sprintf': This func ...

  2. vs的【warning C4996:'fopen': This function or variable may be unsafe】解决方案

    编译警告:warning C4996 与 Security Enhancements in the CRT 将过去的工程用VS2005打开的时候.你有可能会遇到一大堆的警告:warning C4996 ...

  3. warning C4996: 'fopen': This function or variable may be unsafe.(_CRT_SECURE_NO_WARNINGS)

    在 windows 平台下的 visual studio IDE,使用 fopen 等 CRT 函数(C runtime library(part of the C standard library) ...

  4. “warning C4996: 'fopen': This function or variable may be unsafe”和“LINK : fatal error LNK1104”的解决办法

    程序有时编译出现警告C4996,报错:  warning C4996: 'fopen': This function or variable may be unsafe. Consider using ...

  5. 配置OpenCV产生flann\logger.h(66): error C4996: 'fopen': This function or variable may be unsafe问题[zz]

    使用vs2012/2013配置opencv编译出现问题: 1>------ 已启动生成: 项目: Win32ForOpenCV245, 配置: Debug Win32 ------ 1> ...

  6. Visual Studio 2015 编译错误【错误 C4996 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. 】的解决方案

    错误提示信息: 错误 C4996 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s inst ...

  7. VS 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案

    在VS中编译 C 语言项目,如果使用了 scanf 函数,编译时便会提示如下错误: error C4996: 'scanf': This function or variable may be uns ...

  8. Visual Studio 2012 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案

    在VS 2012 中编译 C 语言项目,如果使用了 scanf 函数,编译时便会提示如下错误: error C4996: 'scanf': This function or variable may ...

  9. 解决VS2015中出现类似于error C4996: 'scanf': This function or variable may be unsafe的安全检查错误

    用习惯了VS老版本的人当刚使用VS2013的时候可能总遇到类似于这样的错误: error C4996: 'scanf': This function or variable may be unsafe ...

随机推荐

  1. HDU 1001 Sum Problem

    /* 注意可以是负整数,而且在过程中会超过int,所以要用longlong */ #include <cstdio> int main() { long long n; while (sc ...

  2. Ghost.py 0.1b3 : Python Package Index

    Ghost.py 0.1b3 : Python Package Index Ghost.py 0.1b3 Download Ghost.py-0.1b3.tar.gz Webkit based web ...

  3. Android手机设置隐藏命令大全

    注意:因Android版本较多,固有部分隐藏命令或不能使用 *#*#4636#*#* 显示手机信息.电池信息.电池记录.使用统计数据.WiFi 信息 *#*#7780#*#* 重设为原厂设定,不会删除 ...

  4. Oracle 经典SQL 专为笔试准备

    相信把这99条sql搞定,Oracle基本笔试简直就像玩的一样(史上最全,最经典的入门级Oracle查询语句) 1. select * from emp; 2. select empno, ename ...

  5. poj 2155

    题目链接 二维树状数组 给出矩阵左上角和右下角坐标,矩阵里的元素 1变0 ,0 变1,然后给出询问,问某个点是多少. 树状数组下标不能为0 二维的每次更新都是从(1,1)到(x,y) 要更新(x1,y ...

  6. HDU 4727 The Number Off of FFF

    The Number Off of FFF Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...

  7. VS快捷键简单记录

    代码上下移动行:Alt+上下键 跳转相等大括号:Ctrl+]

  8. 【转】emulator: ERROR: Could not load OpenGLES emulation library: lib64OpenglRender.so

    [转]emulator: ERROR: Could not load OpenGLES emulation library: lib64OpenglRender.so ./emulator64-arm ...

  9. MAVEN入门(二)

    一.IDEA+MAVEN+Tomcat7 创建一个简单的Web app 1.用IDEA创建一个maven项目 注意: 红色部分一定要自己手选本地配置好的maven_home的地址,否则IDEA会选用内 ...

  10. MySql 小问题集合

    - 使用MySql通过SpringFramework来自动建表, 服务器用的是Tomcat, 在server.xml和context.xml中均正确配置了jdbc datasource. 编译通过, ...