【问题标题】:Reading Recommendations To Learn Basics Of C阅读建议以学习 C 基础知识
【发布时间】:2011-01-07 09:23:52
【问题描述】:

我现在正在深入研究我的操作系统项目 ForestOS,但现在我需要更深入地研究 C 的一些简单和基本的东西。现在我在使用正确的变量时遇到了很多问题,并且功能。

我想要只讨论变量、函数以及如何在没有标题的情况下进行开发的资源(stdio.hmath.h 和所有其他人)。

【问题讨论】:

标签: c function


【解决方案1】:

最好的起点可能是书The C Programming Language

这本书是 C 编程语言开发和普及的核心,至今仍被广泛阅读和使用。

【讨论】:

  • 来吧..他仍然需要编写他的第一个“hello world”...他不应该在投资书籍之前至少遵循一些免费的互联网教程吗? :)
  • @littlegreen:他正在尝试编写操作系统;让我们假设他已经过了“hello world”!
  • @Clifford 我认为您的假设可能有点偏差。让我们说,内森对自己的编程能力有“宏大”的想法。
  • 当然!而且我已经花钱了。我从1分钟就买了这本书,我会花更多的钱,这是我已经开始的最好的项目! :D
  • 如果你打算把所有的时间都花在 C 上,买一本书是一项合理的投资,而且那本书会非常有用。
【解决方案2】:

guide to OS development 建议 CProgramming.com 作为最佳起点。有教程、更多资源的链接,一切都是免费的。

【讨论】:

  • +1 'Guide to OS dev' 似乎是一个不错的网站(不是我打算构建自己的操作系统)
【解决方案3】:

构建操作系统并非易事,我建议如果您“在使用正确的变量和函数方面遇到很多问题”,那么您可能会在跑步之前尝试走路! p>

引用:

如何在没有头文件的情况下进行开发(stdio.h、math.h 和所有其他文件)。

我假设您实际上的意思是您想在不使用标准库而不是“无标题”的情况下进行编码。头文件是 C 中模块化所固有的;如果您不使用标头,则您的代码必须是一个整体模块。不要将 headerslibraries 混淆。

然而,即便如此,在编写“裸机”代码时也没有必要不使用标准库。您只需要一个不依赖于操作系统的库,然后编写低级粘合代码以使 stdio 和内存分配等功能在您的系统上工作。例如,这样的库是Newlib。如果您有标准库支持,它将让您的生活变得更加轻松。

【讨论】:

  • +1,Newlib 似乎可以节省时间。当然,除非您想重新发明整个轮子。轮子 2.0。
  • @littlegreen:大声笑,是的,我想重新发明轮子并制作一个 Wheel 2.0,但我将使用 Newlib 作为学习的基础。 ;-)
  • 低级 C = C 是否没有标头? - 像低级汇编和 HLA 一样?
  • 本质上,C 是一种高级语言。低级将直接编写汇编器/处理器代码,这是 C 无法做到的。但是有一个区别。在高级和低级 C 之间,这基本上是 Clifford 所描述的:是否将程序链接到库。标头是无关紧要的(尽管您通常包含标头以描述库中的函数,然后您将程序链接到这些函数......)
  • @Nathan:“低级”一词用于指代代码的目的,而不是使用的语言或其复杂性,或者即使它使用其他标头 - 答案是否定的,从我的回答的第一部分应该已经很清楚了。在这种情况下,“低级别”是指抽象程度最低的级别,例如直接与硬件或 BIOS 服务接口。这绝不意味着代码是简单的或原始的。我不知道 HLA 是什么意思。
【解决方案4】:

您只需要标头来提供函数和外部变量的声明。

可以删除头文件并在翻译单元(又名源文件)中提供您的声明。尽管可能,但不建议这样做。

这是一个没有头文件的合法 C 程序示例:

/* Forward declaration of main(). */
int main(void);

/* Definition for main() function. */
int
main(void)
{
  return 13; /* 42 is such an overrated number. */
}

使用头文件的一些原因是:代码/打字减少和单点维护。如果两个模块需要相同的结构声明,将其放在头文件中将减少键入(您只需在两个文件中#include 它而不是将其复制到两个文件中)。此外,如果您需要更改任何声明,如果它被复制,您将不得不寻找所有副本并更改每个实例,而不是在头文件中进行一次更改。

至于标准的头文件,如math.hstdio.h,如果你不需要,不要包含它们。操作系统不应该需要stdio.h,但可以使用math.h。大多数标准头文件对代码大小没有影响;只到编译时间。

我强烈建议您关注操作系统的正确性,不要担心诸如头文件之类的琐事。在您的操作系统正常运行且强大后,继续进行并减少脂肪。

【讨论】:

    【解决方案5】:

    阅读 Kernighan C 或名为“Let Us C”的书。它将帮助您作为初学者更好地学习

    【讨论】:

      猜你喜欢
      • 2010-12-08
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      相关资源
      最近更新 更多