【问题标题】:string.h not necessary in a C codestring.h 在 C 代码中不是必需的
【发布时间】:2015-12-27 16:06:24
【问题描述】:

我正在用 C 编写代码,我实现了这样的程序:

#include <stdio.h>
int main(int argc, char *argv[])
{
    char name[100];

    printf("What's your name ");
    scanf("%s", name);
    printf(hi %s, nic to meet you !", name);

    return 0;
}

问题是我意识到如果没有 string.h,程序会在不应该的时候工作,因为有一个字符串。有人可以解释一下它为什么有效吗?

【问题讨论】:

  • 确定需要哪些标头的最简单方法是获取您使用的每个函数和man functionname(或whatis functionname,如果您的发行版不提供寻呼机)。然后只需查看man 页面的顶部即可。它会告诉您需要哪些标题。您只使用 标准 I//O 函数,因此您当前的代码中只需要 stdio.h。您也可以通过man headername(例如man string.h)查看该标头提供了哪些功能。

标签: c string header-files


【解决方案1】:

您只在代码中使用了printf()scanf()。它们都在stdio.h 中声明。

“有一个字符串”并不意味着“必须包含string.h”。 “引用在 string.h 中声明的数据类型或函数”确实如此。

【讨论】:

  • 但是我的代码中有一个数据类型,它是char,对吧?
  • char 是语言关键字;一种内在类型。您不需要为其包含任何标题。
  • 但是对于某些编译器有可能避免使用&lt;string.h&gt;。请参阅提交,它修复了在 android 上交叉编译的编译器错误,其中添加了&lt;string.h&gt;:github.com/linux-test-project/ltp/commit/…。尽管在提交消息中未提及,但使用 gccclang 进行正常(本机)编译不需要这些修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-11
  • 2020-08-16
  • 2016-11-05
相关资源
最近更新 更多