1. Строго говоря, реализации функций при использовании директивы include подключает линкер. Но иногда это не так: реализации функций отсутствуют в итоговом .exe и берутся из динамической библиотеки при исполнении программы 2. Если не объявлять явным образом функцию printf и не использовать директиву include , то будет не ошибка, а предупреждение (но так делать не нужно)
Сергей, добрый день! Изучал Python, по вашим урокам, а сейчас с интересом смотрю видео по Си. Снимите пожалуйста ролик где более подробно будет рассказано о том как происходит сборка программы на языке Си. Что такое заголовочный файл, объектный файл, makefile? Можно один и тот же код на языке Си запустить на разных ОС (Lunix, Mac, Windows) как это можно сделать с программами на Python?
Скажите, Сергей (я наверное послушал) лучше использовать define или соnst для определения постоянной скажем в статическом массиве или просто единичной постоянной?
Пока-что смотрю на 1.75-ой скорости, потому-что почти все знаю. Но кое-что все-таки подчерпываю (про elif, elifdef и др. услышал впервые, как и то, что все др. подобное второму есть сокращение от ...defined(...)). Кстати, в линуксе (и по крайней мере, с компилятором gcc или g++), как я успел заметить, с скобками/ковычками в include все более четко. При ковычках ищет в рабочей директории, если не нашел, выдает ошибку. При скобках ищет в /usr/include. Я туда ложил свои заголовочные файлы, чтобы легче их подключать в нескольких проектах. Еще, так подключать заголовки из поддиректорий /usr/include/, например, ...
Доброе утро, как тогда в много-файловых проектах переменные использовать между файлами? Если область видимости переменной только в файле .с Если объявить переменную в .h файле, ее не видно в .с
Об этом речь впереди. В двух словах, любая переменная, объявленная в файле c (вне функций) доступна из другого файла (модуля), только в другом файле нужно сделать объявление этой глобальной переменной по синтаксису: extern ;
Добрый день! Ifndf проверяет отсутствие детективы, если нет, то код выполняется в ifndf выполняется? Получается наоборот. В отличие обычны if? Или я запутался(
Браво маэстро, браво. Вы единственный из ру ютуба кто объясняет настолько всё досконально
Спасибо, Сергей! Очень информативно!
Супер материал. Спасибо вам большое
Спасибо за ваш труд !!! комент для продвижения видоса !!!
Отличное видео! Большое спасибо за материал! Очень нравится ваш курс!
Спасибо. Красиво.
Спасибо Вам! Очень интересная тема! На первый взгляд не очень простая.
Спасибо
1. Строго говоря, реализации функций при использовании директивы include подключает линкер. Но иногда это не так: реализации функций отсутствуют в итоговом .exe и берутся из динамической библиотеки при исполнении программы
2. Если не объявлять явным образом функцию printf и не использовать директиву include , то будет не ошибка, а предупреждение (но так делать не нужно)
Про 2 не скажу за все компиляторы, но мой выдает ошибку, если функция не определена, да и по логике так было бы правильнее.
Я использую директиву #pragma once вместо ifndef define
tnx)💥👍👏
Сергей, добрый день! Изучал Python, по вашим урокам, а сейчас с интересом смотрю видео по Си. Снимите пожалуйста ролик где более подробно будет рассказано о том как происходит сборка программы на языке Си. Что такое заголовочный файл, объектный файл, makefile? Можно один и тот же код на языке Си запустить на разных ОС (Lunix, Mac, Windows) как это можно сделать с программами на Python?
Это тут тема для целого отдельного плейлиста! )) Кратко об этом я уже рассказывал в предыдущих видео (кроме makefile).
Скажите, Сергей (я наверное послушал) лучше использовать define или соnst для определения постоянной скажем в статическом массиве или просто единичной постоянной?
Не то не другое. Дальше будут перечисления, лучше с помощью них.
Пока-что смотрю на 1.75-ой скорости, потому-что почти все знаю. Но кое-что все-таки подчерпываю (про elif, elifdef и др. услышал впервые, как и то, что все др. подобное второму есть сокращение от ...defined(...)). Кстати, в линуксе (и по крайней мере, с компилятором gcc или g++), как я успел заметить, с скобками/ковычками в include все более четко. При ковычках ищет в рабочей директории, если не нашел, выдает ошибку. При скобках ищет в /usr/include. Я туда ложил свои заголовочные файлы, чтобы легче их подключать в нескольких проектах. Еще, так подключать заголовки из поддиректорий /usr/include/, например, ...
@ыз>8
Доброе утро, как тогда в много-файловых проектах переменные использовать между файлами? Если область видимости переменной только в файле .с Если объявить переменную в .h файле, ее не видно в .с
Об этом речь впереди. В двух словах, любая переменная, объявленная в файле c (вне функций) доступна из другого файла (модуля), только в другом файле нужно сделать объявление этой глобальной переменной по синтаксису:
extern ;
@@selfedu_rus Благодарю, лед тронулся)
Добрый день! Ifndf проверяет отсутствие детективы, если нет, то код выполняется в ifndf выполняется? Получается наоборот. В отличие обычны if? Или я запутался(
ifndef будет истнно, если проверяемого макроимени нет
Спасибо большое за уроки! А подскажи пожалуйста, а где хранится определение всех этих функций, которые мы объявляем в заголовках?
В объектных файлах библиотечных модулей (расширение lib).