Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Keil Uvision 5是否添加头文件和源文件?_C_Header Files_Keil - Fatal编程技术网

C Keil Uvision 5是否添加头文件和源文件?

C Keil Uvision 5是否添加头文件和源文件?,c,header-files,keil,C,Header Files,Keil,我从Nordic SDK的keil中的一个示例项目开始。这个问题不是关于nordic sdk,而是关于Keil如何连接头文件和源文件。据我所知,Keil隐藏了合并到main.c文件中的所有头文件,请参见下图 我想添加我自己的名为“physical.h”的头文件,在其中定义我添加的其他硬件。 有时我想添加头文件和源文件“*.c”文件。 我可以具体做些什么来添加一个新文件,并用main.c文件编译这个新文件?希望您能进行一次演练。我认为Keil在文件夹结构方面并不直观。然而,它可能适合于模块化设计

我从Nordic SDK的keil中的一个示例项目开始。这个问题不是关于nordic sdk,而是关于Keil如何连接头文件和源文件。据我所知,Keil隐藏了合并到main.c文件中的所有头文件,请参见下图

我想添加我自己的名为“physical.h”的头文件,在其中定义我添加的其他硬件。 有时我想添加头文件和源文件“*.c”文件。
我可以具体做些什么来添加一个新文件,并用main.c文件编译这个新文件?希望您能进行一次演练。

我认为Keil在文件夹结构方面并不直观。然而,它可能适合于模块化设计,因为它可以轻松地包含来自计算机上许多位置(git、library等)的文件

让我们从问题一开始(添加头文件): main.c文件中的头文件是已包含内容和“工作”的映像。通过右键单击main.c的父文件夹并单击“将新项目添加到组”来添加新文件。从菜单中选择C-file/H-file或任何其他适当的文件

如果还没有组,只需从父文件夹添加一个组即可。 右键单击并按“添加组…”

现在,可能会让您感到困惑的是.h文件不会出现在您刚刚创建的文件夹中。将显示.c文件,但不会显示.h!您将在打开的新窗口中找到您的文件。右键单击您刚刚创建的文件名选项卡,然后单击“复制完整路径”

棘手的部分来了。 转到Keil菜单中的项目选项卡,然后单击“目标选项”或ALT+F7。 转到选项卡“C/C++”选项卡。在“包含路径”窗口中,将显示一个指示“…”的按钮,单击它。 在右上角,按住第一个图标将显示“新建(插入)”,单击它。单击刚刚创建的插槽中的新建按钮“…”,这将打开文件夹菜单。在这里可以找到文件并添加该文件的父文件夹。但是,您可能需要移动创建的文件以找到良好的结构

Keil Uvision 5内部的结构只是虚拟文件夹,创建文件只会将其放入没有结构的项目文件夹中。现在找到一个好的解决方案,取决于你,如果你提出了一个,请发表评论

我想补充的最后一部分是,当您刚刚包含这个文件时会发生什么。好的,进入主.c文件,包括头文件,就像普通的c约定一样#包括“myfile.h”。如果您尝试编译,它应该不会显示任何错误,并且您的主.c文件将有一个子文件,该子文件与刚才包含的.h文件相同

第二个问题:
对于C文件,您只需添加它们,方法与前面相同,但是,Keil将在项目的源代码处转储它们,完全没有结构。不幸的是,对于结构,您必须在Keil之外进行

谢谢你的详细解释!