Чтение рекомендаций для изучения основ C - PullRequest
2 голосов
/ 20 января 2010

Сейчас я действительно углубляюсь в свой проект ОС, который называется ForestOS, но теперь мне нужно больше погрузиться в некоторые простые и базовые вещи языка C. Как и сейчас, у меня много проблем с правильной переменной, которую нужно использовать и функции.

Мне нужны ресурсы, которые говорят только о переменных, функциях и о том, как разрабатывать без заголовков (stdio.h, math.h и все остальные).

Ответы [ 4 ]

13 голосов
/ 20 января 2010

Лучшее место для начала, вероятно, книга Язык программирования C .

Книга была центральной в развитии и популяризации языка программирования C и до сих пор широко читается и используется сегодня.

4 голосов
/ 20 января 2010

A руководство по разработке ОС предлагает CProgramming.com как лучшее место для старта. Там есть учебники, ссылки на другие ресурсы и все бесплатно.

3 голосов
/ 20 января 2010

Сборка ОС нетривиальна, я предлагаю, если у вас " много проблем с правильной переменной и функциями ", то вы можете пытаться пройти до того, как сможете запустить!

Цитата:

как развиваться без заголовков (stdio.h, math.h и всех остальных).

Я предполагаю, что вы на самом деле имеете в виду, что вы хотите кодировать без использования стандартной библиотеки вместо "без заголовков" . Заголовочные файлы являются неотъемлемой частью модульности в C; если вы не используете заголовки, ваш код должен быть одним монолитным модулем. Не путайте заголовки с библиотеками .

Однако даже тогда нет необходимости не использовать стандартную библиотеку при написании «голого» кода. Вам просто нужна библиотека, которая не имеет зависимостей от ОС, и вы пишете низкоуровневый код для склеивания, чтобы такие вещи, как stdio и распределение памяти, работали в вашей системе. Например, такая библиотека Newlib . Это сделает вашу жизнь намного проще, если у вас будет поддержка стандартной библиотеки.

2 голосов
/ 21 января 2010

Вам нужны только заголовки для предоставления объявлений функций и внешних переменных.

Возможно исключить заголовочные файлы и предоставить ваши объявления в блоке перевода (a.k.a. исходный файл). Хотя это возможно, это не рекомендуется.

Вот пример легальной программы на 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.h и stdio.h, если они вам не нужны, не включайте их. ОС не должна требовать stdio.h, но может использовать math.h. Большинство стандартных заголовочных файлов не влияют на размер кода; только во время компиляции.

Я настоятельно рекомендую вам сосредоточиться на правильности вашей ОС и не беспокоиться о мелочах, таких как заголовочные файлы. После того, как ваша ОС работает правильно и надежно, продолжайте и обрезайте жир.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...