Ну... разбрасывание .c файлов по разным каталогам тоже не упрощает Makefile.
Честно говоря, я и сам в своих проектах часто использую маску по расширению .c, чтобы не переусложнять Makefile. Но всё-таки "в душе" считаю это не совсем правильным.
Но всё-таки "в душе" считаю это не совсем правильным.
А напрасно. Когда количество файлов модулей подойдёт к тысяче, вам очень пригодится именно маска (поясню - речь не о микроконтроллерах, где такое вряд ли возможно, речь о программном обеспечении для PC).
Не обязательно. У меня есть проекты с сотнями исходных файлов, благополучно собирающиеся обычным GNU make. Необходимость в autotools/cmake возникает только на кроссплатформенных проектах, где действительно нужна автоконфигурация. Для МК тоже бывают проекты с огромным количеством исходников. Другое дело, что бОльшая часть этих исходников является ресурсными файлами, а не кодом. Например, для каждого клиента можно выбрать свои фонты, иконки, сообщения, фоновый рисунок и логотип. В AT24C256 много ресурсов можно прошить )
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
То при вызове "menu_start" микроконтроллер уходит с брос, судя по отладке массив "Menu" заполнен нулями. Если в хедере закомментировать "void (SensorConf::*Menu[10])(void);" то работает нормально. Как так то?
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Вот поэтому и не стоит их использовать - нарвётесь на удивительные вещи. Например, на такую. В этом компиляторе даже не компилируется. А в gcc-2.95 такое компилировалось, но работало не так, как ожидается - вызывалась функция базового класса, а не подклассов.
Принято ли в IDE добавлять хедер шаблонного класса ? Начал изучать с++, был удивлен что нельзя выделить функции в отельный файл как уже привык для с проектов.
pokk, шаблонный класc есть включаемый файл и добавляется обычным #include. Добавлять в проект IDE его есть смысл только тогда, когда он может модифицироваться, а собираете проект средствами IDE, а не собственным makefile. Иначе, при модификации включаемого файла, IDE или make не будут знать, что он изменился. А значит могут не пересобрать включающие этот файл исходники, решив, что их объектные файлы актуальны. И функции, и методы в C++ вполне можно выделять в отдельный файл. Функции добавляются так же как в C. Ведь, строго говоря, в C++ функций нет. Есть совместимость с C, позволяющая использовать функции. Методы, выносимые в отдельный файл, оформляются в виде наследуемого класса.
Начал изучать с++, был удивлен что нельзя выделить функции в отельный файл как уже привык для с проектов.
Видимо, я неправильно понял, в чём у вас проблема. Не могли бы вы объяснить, что вы хотите сделать по пунктам: 1) Что за шаблонный класс вы хотите добавить в ide? Что это значит и что имеется в виду? 2) Что значит, "функции в отдельный файл"? Какие функции? Шаблонные? Обычные? Методы класса? Что значит, "в отдельный файл"? У вас они должны быть объявлены в *.h и реализованы в *.cpp/*.c/*.cc.
da-nie, только то, что сказал. Функции в C++ есть только на уровне совместимости с С. Сама же парадигма объектной ориентированости их исключает, предполагая, что все реализуется на методах.
Функции в C++ есть только на уровне совместимости с С. Сама же парадигма объектной ориентированости их исключает, предполагая, что все реализуется на методах.
Даже если бы С++ был чисто ООП языком, что, естественно, не так, то все равно функции члены(методы), как уже видно из названия тоже являются функциями, просто они привязаны к классу. Ну будет доступ к функции через лишний указатель и что с того? А еще есть статические функции члены не привязанные к классу, а также шаблонные и лямбда функции, которых не было в С и они уж точно появились не для совместимости с последним...
Для изучения взял пример, создать класс кольцевых буферов(RingBuf), и через параметр шаблона передавать максимальный размер кольцевого буфера. Ну и соответственно, я хотел вытащить функции(методы?) класса RingBuf, в отдельный файл .сpp и добавить его в IDE так как еще 100500 раз буду их изменять. В принципе я понимаю почему это нельзя сделать, и почему они только в H файле остаются. Я даже нашел что .сpp с методами инклудят в конце header'a, но по мне это все костыли. Если оставить как есть(не добавлять header в IDE), и сделать только inlude "RingBuf.h" , то после разрастания проекта как найти файл которые глубоко зарытый файл(file3.h) (main.cpp содержить file2.h ->....> file3.h )?
Цитата:
2) Что значит, "функции в отдельный файл"? Какие функции? Шаблонные? Обычные? Методы класса? Что значит, "в отдельный файл"? У вас они должны быть объявлены в *.h и реализованы в *.cpp/*.c/*.cc.
Вот наброски:
Код:
template <typename T,int T2> class RingBuff { private: T *stackPtr; // указатель на стек int size; // размер стека T top; // вершина стека T Array[T2]; public: RingBuff();// по умолчанию размер стека равен 10 элементам bool push(const T s); // поместить элемент в стек };
Если оставить как есть(не добавлять header в IDE), и сделать только inlude "RingBuf.h" , то после разрастания проекта как найти файл которые глубоко зарытый файл(file3.h) (main.cpp содержить file2.h ->....> file3.h )?
Надуманная проблема, добавление хедера в IDE ни на что не влияет.
da-nie, только то, что сказал. Функции в C++ есть только на уровне совместимости с С. Сама же парадигма объектной ориентированости их исключает, предполагая, что все реализуется на методах.
А С++ не только ООП ( кстати, ООП, говорят, сильно лучше в Objective C).
Цитата:
Ну и соответственно, я хотел вытащить функции(методы?) класса RingBuf, в отдельный файл .сpp и добавить его в IDE
Так нельзя. Все шаблоны только в заголовочных файлах. И компилятор без специализации шаблона не проверяет корректность кода.
Здравствуйте Уважаемые! Столкнулся с такой ситуацией, что стало мне нужно в массив закинуть адреса полей структуры.Но что-то ничего не выходит, да и в сети не нашел ответа...Есть ли такая возможность в си? Спойлер
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения