相关疑难解决方法(0)

默认情况下,在Visual Studio中从项目中删除安全警告(_CRT_SECURE_NO_WARNINGS)

是否有一种方法可以默认设置所有项目,删除使用scanf()等函数时出现的预编译器安全警告.我发现你可以通过在项目选项中添加一行或#define _CRT_SECURE_NO_WARNINGS在代码的开头添加一行来实现.

我发现自己一再创建解决编程竞赛的新项目,并且真的很烦人(并且花费宝贵的时间)来添加:

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
Run Code Online (Sandbox Code Playgroud)

在代码的开头,或者每次我开始一个新项目时在预编译器选项中设置它.

c++ visual-studio precompiler

171
推荐指数
6
解决办法
67万
查看次数

如何使用_CRT_SECURE_NO_WARNINGS

我在我的简单MFC窗口应用程序中编译错误,该应用程序由向导生成,包含几行代码:

错误C4996:'strncpy':此函数或变量可能不安全.请考虑使用strncpy_s.要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS.详细信息请参见在线帮助.

我设置 Configuration Properties>>C/C++>>Preporocessor>>Preprocessor Definitions>> _CRT_NONSTDC_NO_WARNINGS

但这没有帮助.我有另一个非常接近的项目,在这个地方只生成警告,它没有_CRT_NONSTDC_NO_WARNINGS定义.

只有项目之间的差异是向导中的几个不同选项.

为什么_CRT_NONSTDC_NO_WARNINGS对第一个项目没有帮助,为什么第二个项目在没有这个定义的情况下编译没有问题?

c++ warnings visual-c++ visual-studio-2012

45
推荐指数
6
解决办法
21万
查看次数

在Visual Studio 2013中编译sqlite.c时收到错误C4996

我将我的项目从Visual Studio 2012移植到2013,并且sqlite.c将无法在其中编译.我收到这个编译时错误:

error C4996: 'GetVersionExA': was declared deprecated
error C4996: 'GetVersionExW' was declared deprecated
Run Code Online (Sandbox Code Playgroud)

我得到了最新版本的sqlite以确保它没有被占用,但它没有.我不知道该怎么办这个错误.我没有修改源代码; 我只是创建一个项目,包括sqlite.h和sqlite.c.谢谢.

sqlite compiler-errors visual-studio-2013

21
推荐指数
2
解决办法
2万
查看次数

错误C4996:'scanf':此函数或变量在c编程中可能不安全

我创建了一个小应用程序,通过使用带参数的用户定义函数来查找最大数量.当我运行它时,它会显示此消息

错误1错误C4996:'scanf':此函数或变量可能不安全.请考虑使用scanf_s.要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS.详细信息请参见在线帮助.

我该怎么做才能解决这个问题?

这是我的代码

#include<stdio.h>

void findtwonumber(void);
void findthreenumber(void);

int main() {
    int n;
    printf("Fine Maximum of two number\n");
    printf("Fine Maximum of three number\n");

    printf("Choose one:");
    scanf("%d", &n);
    if (n == 1)
    {
        findtwonumber();
    }
    else if (n == 2)
    {
        findthreenumber();
    }
    return 0;
}

void findtwonumber(void)
{
    int a, b, max;
    printf("Enter a:");
    scanf("%d", &a);
    printf("Enter b:");
    scanf("%d", &b);
    if (a>b)
        max = a;
    else
        max = b;
    printf("The max is=%d", max);
}

void findthreenumber(void)
{
    int a, …
Run Code Online (Sandbox Code Playgroud)

c windows tr24731 visual-studio c11

13
推荐指数
3
解决办法
8万
查看次数

Visual C++:checked_array_iterator如何有用?

警告级别4(/ W4)编译代码时,我在参数为C数组的调用(而不是像向量的STL容器)上收到C4996警告std::copy().修复此问题的推荐解决方案似乎是使用stdext :: checked_array_iterator.

有什么用的stdext :: checked_array_iterator?它是如何工作的?

为什么它不会对在Visual C++ 2010下编译的这段错误代码发出任何编译警告?:

#include <algorithm>
#include <iterator>
using namespace std;

int main()
{
    int arr0[5] = {100, 99, 98, 97, 96};
    int arr1[3];
    copy( arr0, arr0 + 5, stdext::checked_array_iterator<int*>( arr1, 3 ) );

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

warnings iterator visual-c++

6
推荐指数
1
解决办法
1168
查看次数

C++ OpenSSL 1.0 迁移到 3.0

我正在尝试创建一个机器人来访问 BitStamp API ( https://www.bitstamp.net/api/ ) 并执行操作,但我遇到了障碍。

在链接的页面中,他们展示了如何使用 c++(V2 版本)进行身份验证的示例。我在使用 openSSL 进行身份验证时遇到这部分问题:

HMAC_CTX ctx;
HMAC_CTX_init(&ctx);

HMAC_Init_ex(&ctx, api_secret.c_str(), api_secret.length(), EVP_sha256(), NULL);
HMAC_Update(&ctx, (unsigned char*)data_to_sign.c_str(), data_to_sign.length());
HMAC_Final(&ctx, result, &len);
HMAC_CTX_cleanup(&ctx);

std::string x_auth_signature = b2a_hex( (char *)result, 32 );
free(result);
Run Code Online (Sandbox Code Playgroud)

std::string b2a_hex(char *byte_arr, int n)
{
    const static std::string hex_codes = "0123456789abcdef";
    std::string hex_string;
    for ( int i = 0; i < n ; ++i ) {
        unsigned char bin_value = byte_arr[i];
        hex_string += hex_codes[( bin_value >> 4 ) & 0x0F];
        hex_string …
Run Code Online (Sandbox Code Playgroud)

c++ openssl

5
推荐指数
1
解决办法
1万
查看次数