strcpy_s not working with gcc

前端 未结 2 1844
不知归路
不知归路 2021-01-11 09:27

I have a C++11 project, and I added some strcpy_s method calls. This works on windows, but when compiling on gcc, there is an error stating that strcpy_s<

相关标签:
2条回答
  • 2021-01-11 10:09

    strcpy_s and friends are not a part of C++ just yet. It seems that C++17 will have them, but as of now providing them is up to the implementations. It seems glibc doesn't.

    In fact, according to the cppreference, __STDC_WANT_LIB_EXT1__ will only work if __STDC_LIB_EXT1__ is defined. On my Arch Linux it isn't.

    #ifdef __STDC_LIB_EXT1__
    constexpr bool can_have_strcpy_s = true;
    #else
    constexpr bool can_have_strcpy_s = false;
    #endif
    

    You can use strncpy. With some care, it can be safe.

    0 讨论(0)
  • 2021-01-11 10:10

    GCC (or rather, glibc) does not support strcpy_s() and friends. For some ideas on where you can find a library which does support them, see here: Are there any free implementations of strcpy_s and/or TR24731-1?

    0 讨论(0)
提交回复
热议问题