中间的宏名漏了 WANT_
话说回来,一直以为 *_s 系函数是微软专有的
没想到 GCC 也有这个扩展
【 在 b0207191 的大作中提到: 】
: 标 题: 请教个关于c11函数的问题
: 发信站: 水木社区 (Fri Dec 8 16:21:30 2023), 站内
:
: 想试验下strcpy_s
:
: 网上搜索说要这么写
:
: #define __STDC_WANT_LIB_EXT1__ 1
:
: #include <string.h>
: #include <stdio.h>
: #include <stdlib.h>
:
: int main(void)
: {
: char *src = "Take the test.";// src[0] = 'M' ; // this would be undefined behavior
: char dst[strlen(src) + 1]; // +1 to accomodate for the null terminator strcpy(dst, src);
: dst[0] = 'M'; // OK printf("src = %s\ndst = %s\n", src, dst);
:
: #ifdef __STDC_LIB_EXT1__
: set_constraint_handler_s(ignore_handler_s);
: int r = strcpy_s(dst, sizeof dst, src);
: printf("dst = \"%s\", r = %d\n", dst, r);
: r = strcpy_s(dst, sizeof dst, "Take even more tests.");
: printf("dst = \"%s\", r = %d\n", dst, r);
: #endif
:
: }
:
: 编译的时候也添加了 -std=c11
:
: gcc版本是gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2) 应该也支持c11
:
: 但是编译完执行,什么都没有打印出来
:
:
:
: --
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 218.66.91.*]
--
FROM 223.166.224.*