【发布时间】:2020-09-13 09:41:07
【问题描述】:
我正在查看 AVR 端口的 FreeRTOS 演示项目。 Makefile 通过“-I”指令具有指向 RTOS 源文件所在目录的路径。但是,在项目的 main.c 模块中,#include 没有提供任何这样的路径:
#include "FreeRTOS.h"
所以我无法理解是只有链接器需要“-I”指令才能找到目标文件?这是否也意味着一旦文件被编译为目标代码,对于 GCC,如果它知道在哪里查找,它们本质上就位于同一个文件夹中?
我之所以感到困惑,是因为我以前曾见过这样的 #include 语句:
#include <avr/io.h>
如果 GCC 已经知道 io.h 的位置,为什么还要在其前面加上 "avr" 部分?
【问题讨论】:
-
你有点倒退了。
-I告诉编译器搜索该路径以查找头文件。这就是#include "FreeRTOS.h"不需要路径的原因。如果没有-I,那么您需要将完整路径放在#include中(这是不好的做法)。