C4996和__declspec

原创 2015年11月18日 00:30:32

编译过程中遇到C4996的错误,msdn解释如下:

'function': was declared deprecatedalso'std::<function name>': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct.


对于标准C++库中的一些函数,认为是不安全的,VS2015中会报错;

统一解决方法:预编译处理中加上-D_SCL_SECURE_NO_WARNINGS

另外对于不同的情况,可以加上不同的预编译处理,MSDN的链接:

https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=ZH-CN&k=k%28C4996%29&rd=true



另外在MSDN的解释中,看到了如下举例

// C4996.cpp
// compile with: /W3
// C4996 warning expected
#include <stdio.h>

// #pragma warning(disable : 4996)
void func1(void) {
   printf_s("\nIn func1");
}

__declspec(deprecated) void func1(int) {
   printf_s("\nIn func2");
}

int main() {
   func1();
   func1(1);
}

对__declspec的用法看了下,是microsoft特有的关键字,用于对函数、类、变量等进行特殊扩展属性的定义

如本例中的__declspec(deprecated)是指在新版本中,这个函数不再被支持。



__declspec还有很多用法,以后慢慢研究



_declspec(dllexport) 与__declspec(dllimport) 的使用说明

__declspec(XXXXXX)是windows扩展C++的编译宏头 _declspec(dllexport)  声明一个导出函数,是说这个函数要从本DLL导出。我要给别人用。一般...
  • prince_jun
  • prince_jun
  • 2012年11月12日 15:17
  • 646

__declspec(dllimport)和(dllexport)的总结

是时候总结一下__declspec(dllimport)的作用了。可能有人会问:__declspec(dllimport)和__declspec(dllexport)是一对的,在动态链接库中__dec...
  • yang0923bin
  • yang0923bin
  • 2014年08月14日 17:48
  • 3774

__stdcall, __cdecl, __fastcall, __declspec几种调用约定及区别

分别说明 __cdecl和__stdcall都是函数调用约定, 规定了参数出入栈的顺序和方法,  其中_cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的...
  • syshengok
  • syshengok
  • 2013年07月28日 16:48
  • 699

【C/C++】关于修饰函数关键字 __declspec,__cdecl,__stdcall,__declspec

_cdecl 是C Declaration的缩写,表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不需要求调用者传递多少参数,调用者传递过多或者...
  • RazilFelix
  • RazilFelix
  • 2017年01月18日 10:24
  • 839

c++中__declspec用法总结

“__declspec”是Microsoft c++中专用的关键字,它配合着一些属性可以对标准C++进行扩充。这些属性有:align、allocate、deprecated、 dllexport、dl...
  • hollyhock13
  • hollyhock13
  • 2008年08月06日 13:40
  • 12086

__declspec(thread)

__declspec(thread)
  • achellies
  • achellies
  • 2010年07月21日 16:33
  • 2958

__declspec用法详解

__declspec用法详解   __declspec用于指定所给定类型的实例的与Microsoft相关的存储方式。其它的有关存储方式的修饰符如static与extern等是C和 C++语言的ANS...
  • i7thTool
  • i7thTool
  • 2016年11月02日 12:40
  • 2402

extern "c" __declspec(dllimport) __declspec(dllexport)

extern   "C "只是表示这个可以被C语言调用,除了这个之外,没有什么更多含义。 由于C++里面有函数重载,所以在编译的时候,编译器会在你写的,也就是你希望导出的函数 后面加上一些关于...
  • q5512049
  • q5512049
  • 2015年10月10日 12:02
  • 1348

VS 中的C4996错误解决办法

>e:\2016.6.3-绘图方案\t1\serialport.cpp(131): error C4996: 'swprintf': function has been changed to conf...
  • u014272404
  • u014272404
  • 2016年06月20日 16:53
  • 2519

__declspec(naked) 生成纯汇编使用方法

__declspec(naked)是用来告诉编译器函数代码的汇编语言为自己的所写,不需要编译器添加任何汇编代码,通俗说可生成纯汇编。 使用方法: #define NAKED __declsp...
  • evi10r
  • evi10r
  • 2011年10月31日 22:21
  • 4799
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C4996和__declspec
举报原因:
原因补充:

(最多只允许输入30个字)