【问题标题】:OnlineGDB c++ not compiling strcpy_sOnlineGDB c ++没有编译strcpy_s
【发布时间】:2021-10-06 11:34:12
【问题描述】:

我将在onlinegdb.com上编译一个非常简单的代码

代码如下。

#include <stdio.h>
#include <string.h>

int main()
{
    char s[10] = {0};
    
    strcpy_s(s, 10, "1234567890");
    
    printf("%s", s);
    
    return 0;
}

我选择了选项语言C++C++14C++17,但所有这些都没有编译strcpy_s

上面写着:

main.cpp: In function ‘int main()’:
main.cpp:16:33: error: ‘strcpy_s’ was not declared in this scope
     strcpy_s(s, 10, "1234567890");
                                 ^

我用谷歌搜索了分钟,但没有答案。

gdb online不支持c++11以上的c编译器吗?请帮帮我。谢谢。

【问题讨论】:

    标签: c++11 strcpy


    【解决方案1】:

    来自https://en.cppreference.com/w/c/string/byte/strcpy

    与所有边界检查函数一样,只有在实现定义了__STDC_LIB_EXT1__ 并且用户在包含string.h 之前将__STDC_WANT_LIB_EXT1__ 定义为整数常量1 时,才能保证strcpy_s 可用。

    您尚未检查是否定义了 __STDC_LIB_EXT1__(它不是由 onlinegdb.com 使用的任何编译器定义的),并且您根本没有表示您想要 strcpy_s

    【讨论】:

    • 谢谢。我已经测试并意识到 onlinegdb 不支持它。下次我会换在线c++网站。
    • 啊,我发现像gccg++这样的linux编译器不支持strcpy_s()。我的目标是为 windows c++ 编译,所以我必须找到在线 windows 编译器。
    猜你喜欢
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 2014-12-08
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    相关资源
    最近更新 更多