strfry(char*__ string)返回int?

JB0*_*2D1 4 c

所以我是C的新手,当我遇到https://www.gnu.org/software/libc/manual/html_node/strfry.html#strfry时,我正在玩GNU C库中的函数.

好奇,我写了一个小测试程序:

1 #include <stdio.h>
2 #include <string.h>
3 
4 main ()
5 {
6     char *str = "test123abc";
7     char *other;
8 
9     other = strfry(str);
10    printf("%s\n", other);
11     return 0;
12 }
Run Code Online (Sandbox Code Playgroud)

gcc test.c 输出 test.c:9: warning: assignment makes pointer from integer without a cast

为什么?

/usr/include/string.h 有以下条目:

extern char *strfry (char *__string) __THROW __nonnull ((1));

如何char *function(...)回归int

谢谢

use*_*342 7

由于strfry是GNU扩展,您需要#define _GNU_SOURCE使用它.如果您未能提供#define,则声明将不可见,编译器将自动假定该函数返回int.

正如perreal所指出的,一个相关的问题是修改文字字符串是未定义的行为.一旦您strfry向编译器声明了可见声明,就会适时报告.

请注意,该strfry功能及其表兄memfrob并不完全严重,很少用于生产.