gpt4 book ai didi

stdio.h 中的函数 getline() 可以与 K&R88 中的函数共存吗?

转载 作者:行者123 更新时间:2023-12-02 18:18:48 25 4
gpt4 key购买 nike

我对 [K&R88] 深陷其中,并且受到了 gcc 的责备,因为 K&R 用作示例和练习 Material 的函数 getline() 是现在在 stdio.h 中(据我所知,自 2010 年左右以来一直如此。)

是否有任何方式告诉编译器像 1988 年一样播放它,并让我的朴素版本取代库中的版本?

(是的,这是徒劳的,但在 [K&R88] 中填充是我的新爱好;-)

强制编译器输出:

gcc -g -Wall -o "pgm" "pgm.c" (in directory: /home/eric/Development/6.087)
pgm.c:9:7: error: conflicting types for ‘getline’
9 | char *getline(){
| ^~~~~~~
In file included from pgm.c:1:
/usr/include/stdio.h:616:18: note: previous declaration of ‘getline’ was here
616 | extern __ssize_t getline (char **__restrict __lineptr,
| ^~~~~~~
Compilation failed.

最佳答案

与您的冲突的 getline 函数不是标准 C 的一部分 - 它是 POSIX 的 getline .

如果您使用 -std 使用标准 C 进行编译:

gcc -g -Wall -std=c17 -o pgm pgm.c

你可以避免冲突。

话虽如此,如果您是从 C 开始,就没有理由向 K&R C 学习(在我看来,它更像是一个引用)。而且我们也不会回到 1988 年;-)

此后语言发生了很大变化,The Definitive C Book Guide and List 提供了一份很好的建议列表。 .

关于stdio.h 中的函数 getline() 可以与 K&R88 中的函数共存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71147184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com