通过在编程Arduino时在程序中包含库文件(例如LiquidCrystal.h
),库中会声明某些函数。因此,在将程序上传到微控制器时,头文件是否也会上传?
答案 0 :(得分:0)
没有。源代码是编译的,每个单独的编译单元彼此链接并与库生成机器代码二进制文件,这是加载到处理器的内容。
编译语言(如C和C ++)不会像解释语言那样直接执行。而是编译器生成目标本机机器代码,处理器可以直接运行。
虽然编译器处理单个源文件(生成目标代码,但这些可能包括对其他模块和库中的代码的引用 - 这些引用由链接器解析,链接器替换符号链接直接存储器地址。生成的二进制文件是执行的。
头文件只是源代码,通常包含其他模块或库中包含的代码的函数签名的声明。这些允许编译器“知道”这些接口“看起来像”,而无需知道实现细节(链接器解析)。
更完整的说明here(例如)。
所有这些都发生了,即使在Arduino环境中 - 在这种情况下,很多细节都隐藏在你的身上,这使得Arduino成为一个简单的初学者环境,但最终灵活性不大 - 你放弃了一些控制和可见性交换不要害怕嵌入式开发“太难”。但是,如果您需要查看,则所有步骤都在构建输出日志文本中可见。
描述了here的Arduino的具体构建过程详细信息。