当前位置:  开发笔记 > 编程语言 > 正文

Visual Studio中的sprintf错误

如何解决《VisualStudio中的sprintf错误》经验,为你挑选了1个好方法。

我正在windows visual studio中开发UDP套接字程序.我收到了sprintf语句的错误.怎么纠正呢?我的代码是:

    for (i = 0; i < 30;i++) //take-off
{
    printf("send AT*REF:take off\n");
            sprintf(command, "AT*REF=%d,290718208\r", seq++);



    rc = sendto(sd, command, strlen(command) + 1, flags, (struct sockaddr *) &droneAddr, sizeof(droneAddr));
    if (rc<0) {
        printf("%s: can not send data\n", argv[0]);
            return(1);
                    }
     }

我得到的错误是:

Error   1 error C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
Error   1 error LNK2019: unresolved external symbol __imp__bind@12
Error   2 error LNK2019: unresolved external symbol __imp__htonl@4 referenced in function _main 
Error   3 error LNK2019: unresolved external symbol __imp__htons@4
Error   4 error LNK2019: unresolved external symbol __imp__sendto@24
Error   5 error LNK2019: unresolved external symbol __imp__socket@12
Error   6 error LNK2019: unresolved external symbol __imp__gethostbyname@4
Error   7 error LNK1120: 6 unresolved externals 

Bathsheba.. 24

printf并且其姐妹函数sprintf被认为是不安全的,因为如果使用不正确,它们会发出未定义的行为.

Visual Studio默认禁用这些功能.

但是,由于它们是C++标准库的一部分,因此您可以使用它们.但是,如果包含该行,Visual Studio将只允许您这样做

#define _CRT_SECURE_NO_WARNINGS

在包含相关标准库头之前.

或者,_CRT_SECURE_NO_WARNINGS在项目预处理器设置中包含(这就是我所做的).

(顺便说一句,在这种情况下,Visual Studio会发出一个非常有用的错误消息.请尝试学习解释它们.)



1> Bathsheba..:

printf并且其姐妹函数sprintf被认为是不安全的,因为如果使用不正确,它们会发出未定义的行为.

Visual Studio默认禁用这些功能.

但是,由于它们是C++标准库的一部分,因此您可以使用它们.但是,如果包含该行,Visual Studio将只允许您这样做

#define _CRT_SECURE_NO_WARNINGS

在包含相关标准库头之前.

或者,_CRT_SECURE_NO_WARNINGS在项目预处理器设置中包含(这就是我所做的).

(顺便说一句,在这种情况下,Visual Studio会发出一个非常有用的错误消息.请尝试学习解释它们.)

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有