c-有必要包括shebang#吗/头文件中的bin/bash



需要包含#/bin/bash在项目中所有文件的第一行中创建静态库,但在编译对象文件的过程中,编译器给了我消息:在0-isupper.c:1:
main.h:1:2:错误中:无效的预处理指令#
1|#/bin/bash
|^
指示的错误为
所以,我想知道头文件是否包含shebang。

shebang行只属于可执行文件(脚本(。它在执行文件时由内核进行解释。您必须执行类似./header.h的操作来执行标头,这样内核才能关注shebang行,而且标头也必须是可执行的。

头文件永远不应该是可执行的,所以头文件不需要shebang行。

此外,正如编译器正确指出的那样,shebang行(以#!开头的第1行(是无效的C。C预处理器将#解释为"在此之后有一个预处理器指令",但没有有效的(标准(C预处理器指令以!(bang(开头。

目前还不清楚为什么创建静态库需要一条shebang线。我通常会使用makefile来控制库的构建,而这些文件中通常没有shebang。(如果你使用#!/usr/bin/make -f作为shebang,你可以使用它,但这是非常非常非标准的。(

因此,对指令的含义存在一些误解,即存在";在项目中的所有文件的第一行中包括CCD_ 6以创建静态库的要求";。然而,至少有两种可能性:

  1. 发布指令的人没有明确说明意图,你误解了他们的说明
  2. 发布指令的人不明白他们在具体说明什么

我认为,你更有可能误解了他们的意图,可能是因为你读得不够仔细,也可能是因为他们没有足够仔细地说明意图。

否。头文件由编译器读取。内核使用Shebang(#!(来确定使用哪个二进制文件来解释文本文件的剩余部分。通常,二进制文件是shell或其他脚本语言,如awk、javascript、perl、python、ruby等。

最新更新