【发布时间】:2019-03-20 01:54:18
【问题描述】:
假设以下简单的C 代码:
file1.c
#include <stdio.h>
char* gets(char* i){
return i;
}
这是重新定义 libC 原生函数 gets。
这与gcc file1.c 编译得很好。
我的问题是链接器为什么不抱怨duplicate symbols,因为这个函数也在 libC 本身中定义?
【问题讨论】:
-
注意:
gets()不在C11/C17的标准库中。 -
@chux Linker 警告
warning: thegets' 功能很危险,在使用时不应使用`。我用 C11。 -
Alex,一定要试试
gcc -std=c11 -Wall -Wextra -Wconversion file1.c -
警告是另一回事,与溢出保护有关
-
关于
gets()的警告不是关于溢出保护,而是关于函数gets()已经贬值多年,并在C 编程语言的最后两个版本中完全删除