链接器/编译器/预处理问题
Linker / Compiler / Pre-processing question
C语言:
1.Assume 我有指令#bla。它未定义。是编译错误还是预处理错误?
2.Assume 我有 2 个 .c 文件:A.c、B.c(仅此而已。没有 .h 或其他任何文件。)。现在,假设在 A.c 中我在全局命名空间中有一个函数。
现在,我在 B.c(不知道 a.c)处使用该函数。它会工作吗?链接器会填补空白吗?我是否需要添加 at A.c func 签名才能使用它?或者我可以使用它吗?
您无需添加函数签名即可使用它。 B.c 不需要了解 A.c 中定义的函数的任何信息。链接器将填补空白。如果您的项目链接器中的 B.c 和 A.c 都与您在 B.c
中使用的 A.c 中的函数相匹配
但是编译器会警告您缺少函数声明。
# 指令与预处理步骤相关。所以这是预处理错误而不是实际的编译错误。
C语言:
1.Assume 我有指令#bla。它未定义。是编译错误还是预处理错误?
2.Assume 我有 2 个 .c 文件:A.c、B.c(仅此而已。没有 .h 或其他任何文件。)。现在,假设在 A.c 中我在全局命名空间中有一个函数。 现在,我在 B.c(不知道 a.c)处使用该函数。它会工作吗?链接器会填补空白吗?我是否需要添加 at A.c func 签名才能使用它?或者我可以使用它吗?
您无需添加函数签名即可使用它。 B.c 不需要了解 A.c 中定义的函数的任何信息。链接器将填补空白。如果您的项目链接器中的 B.c 和 A.c 都与您在 B.c
中使用的 A.c 中的函数相匹配但是编译器会警告您缺少函数声明。
# 指令与预处理步骤相关。所以这是预处理错误而不是实际的编译错误。