需要包含#/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以创建静态库的要求";。然而,至少有两种可能性:
- 发布指令的人没有明确说明意图,你误解了他们的说明
- 发布指令的人不明白他们在具体说明什么
我认为,你更有可能误解了他们的意图,可能是因为你读得不够仔细,也可能是因为他们没有足够仔细地说明意图。
否。头文件由编译器读取。内核使用Shebang(#!
(来确定使用哪个二进制文件来解释文本文件的剩余部分。通常,二进制文件是shell或其他脚本语言,如awk、javascript、perl、python、ruby等。