Змінюй хід війни! Допомагай ЗСУ!

Программирование ARM. Eclipse, Keil,IAR,CooCox - всё сюда.

ммм... я её не использую, я просто задефайнил хидер в 2-х .с файлах одновременно.

Мне что, все переменные, которые в хидере есть - ещё раз екстерном обязательно объявлять?? Да ни где такого нет. Или я чего-то не понимаю.

И почему в хандлерз? Она именно там и объявлена сама, её ещё раз екстерном?

потому что переменная должна быть обьявлена только один раз.
Обьявил ее в нужном модуле,сделал экстерном в хидере,теперь каждый модуль,который пользуется этим хидером будет знать,что переменная определена в другом месте и линкер не будет ругаться.
Еще делается защита от рекурсивного подключения хидеров
#ifndef __mhdr_h
#define __mhdr_h
 
Шозанахуй? А как он библиотечные функции друг с другом пересекает, в которых включение .h в несколько файлов - норма?

Чё, *****, ему надо? Ни в одном IDE такого нету.
Во во во, полчаса назад я эту ***ню борол у себя! Прикинь, он **** "забывает" про изменения внесенные в хидер.
Короче, я сделал так. В дереве проекта еще раз открыл нужный хидер, в него перетащил то что нафигачил в уже открытом. Старый закрыл, новый сохранил. По сути это ОДИН И ТОТ же, *****, файл, но Кейлу *****.
 
да дохера где такое есть. неча привыкать к плюхам коммерца

Не, есть какой-то особенный глюк кейла, из за него я и не использовал этот бред.

Дело в том, что либы, которые он затягивает из того же куба - отлично работают, а там - дефайны как множественные, так и перекрестные (чего ни один компилятор не простил бы).
Пример:
Код:
/**
  ******************************************************************************
  * @file           : usbd_conf.h
  * @version        : v1.0_Cube
  * @brief          : Header for usbd_conf file.
  ******************************************************************************
......
#include "usbd_def.h"
и тут же
Код:
/**
  ******************************************************************************
  * @file           : usbd_conf.h
  * @version        : v1.0_Cube
  * @brief          : Header for usbd_conf file.
  ******************************************************************************
  * COPYRIGHT(c) 2016 STMicroelectronics
....
#include "usbd_def.h"
И НИ ГДЕ! Ни где, Карл! Нет ни каких екстернов, чтобы не ругалось. Это ж непреемлемо - там десятки описаний, что, все экстерном? Да нет там екстернов ни каких.
Екстерн нужен, если я объект использую. И-то - если его не поставить, а использовать имя - он просто создаст ещё один объект. Я же хидер добавил - сколько памяти выделять компилятор знает. Он его создаст - неоднократно проверено (тот же non eabi...хуёмаё арм ЖЦЦ, атмел, иар). Везде кроме кейла просто инклудят хидеры в .с в любом количестве, а если без extern - будет N переменных одного типа с одним именем... видимых только из файла, где они созданы.
Но это ни как не multiple definition.

потому что переменная должна быть обьявлена только один раз.
Обьявил ее в нужном модуле,сделал экстерном в хидере,теперь каждый модуль,который пользуется этим хидером будет знать,что переменная определена в другом месте и линкер не будет ругаться.
Еще делается защита от рекурсивного подключения хидеров
#ifndef __mhdr.h
#define__mhdr.h

ьыыыы...
Вот ты конкретно сейчас на кейловский проект смотришь?
А я смотрю.
И ни какого отношения к требованиям стандарта этотт маразм не имеет.
И #ifndef __file.h
#define__file.h
там есть у меня.
Просто єто кейл. Чтобы не быть голословным - просто поставь кейл, создай проект и заинклудь в 2 .с файла один .h файл - а-то этот спич весь о сферических конях. Собери в кейле и удивись.

Во во во, полчаса назад я эту ***ню борол у себя! Прикинь, он **** "забывает" про изменения внесенные в хидер.
Короче, я сделал так. В дереве проекта еще раз открыл нужный хидер, в него перетащил то что нафигачил в уже открытом. Старый закрыл, новый сохранил. По сути это ОДИН И ТОТ же, *****, файл, но Кейлу *****.

о как... а я прошлій раз, когда стоял выбор IDE на повестке - именно из за этой хеты кейл ***** выкинул. Я так и не нашел в чем прикол.
 
Тогда может IDE поменять,чтобы не удивляться? К той-же Eclipse уже прикручивается IAR.
 
я когда вижу переменную в хедере, хоть и extern - делаю вот так: :eyecrazy:
пушо это такой крайняк, шо пестрить определениями оно никак не должно.
и пестроту всю стараюсь в неймспейс обернуть, то бишь в struct{}
иначе :eyecrazy: :eyecrazy: :eyecrazy:
 
Тогда может IDE поменять,чтобы не удивляться? К той-же Eclipse уже прикручивается IAR.

Я так и делал, но USB библиотеки правильные - генерятся в IAR, кейл и ещё 3 ИДЕ, среди которых нет еклипса, а есть еклипсоподобные

Я уже устал перебирать IDE, ***. Ну ещё 2 надо поставить и проверить.

IAR уже доделал автодополнение кода?
 
я когда вижу переменную в хедере, хоть и extern - делаю вот так: :eyecrazy:
пушо это такой крайняк, шо пестрить определениями оно никак не должно.
и пестроту всю стараюсь в неймспейс обернуть, то бишь в struct{}
иначе :eyecrazy: :eyecrazy: :eyecrazy:

ммм... чем тебе не нравятся переменные?
В хИдере, не в хедере :D

хидер это .h файл, а не верхняя часть файла .с :)
Чего в .h не должно быть переменных? Не всё есть смысл оборачивать.
 
IAR уже доделал автодополнение кода?
Сделал. Версия 7.50

Не знаю, не смотря на все приколы мне нравится Кейл, потому шо... удобный он, вкладочки разноцветные там, ебли с настройкой меньше. И вообще привык я к нему. Четвертый ****о, а пятый ништяк :)
 
Сделал. Версия 7.50

Потому как твоё предположение о забівчивости кейла - не подтвердилось. Всё он замечательно помнит - глюк в другом где-то. Если я дефайню хидер только в 1 файл - всё работает. Множественній дефайн вызывает ошибку. и как это обойти я не понимаю. И как это обошли в либах - тоже. так как либы все работают и содержат любые дефайны, включая перекрестные.
 
Проверил ещё 2 IDE
Докладываю - обе на еклипсе (в результате - обе ушли *****).
Одна - не фриварь. Вернее, она фриварь только без много чего (отладчика, анализа статического кода и ещё чего-то). Чтобы включить полный функционал - помогает "недорогая подписка". Стоимость самой "недорогой подписки" я ни где не нашел (ну я больше 2х минут и не искал).
Это Атоллик тру студио Фтопку.

SystemWorkbench - еклипс. Бесплатен. Бессмысленнен.
Открыл проект - один из юсб-файлов сразу после генератора подсвечен воскличательным знаком, утверждает, что мало переменных передают в функцию.

Даже не компилировал - закрыл проект.

Остался или IAR, или если кто-нибудь объяснит мне что надо кейлу, чтобы он перестал неадекватно реагировать на включение одного хидера в 2 сишника одновременно.

Сделал. Версия 7.50

Не знаю, не смотря на все приколы мне нравится Кейл, потому шо...

Кейл не работает.
Невозможно в 2 разных *.с файла включить один и тот же *.h файл.
Как это сделать?
 
Ну я хер его знает. У меня хидер с системными параметрами подключен в десятке сишных файлов и все ОК, полет нормальный.
 
Ну я хер его знает. У меня хидер с системными параметрами подключен в десятке сишных файлов и все ОК, полет нормальный.

А у меня - нет. И єто уже второй раз происходит в истории. Первый раз кейл именно по такой же причине улетел на мусорку.
 
Может Пашу Гайдука попросим чтоб запилил свою IDE с библиотеками и визардами?
:D
 
У кейла с инклудами какой-то ****ец.
Говорю создать файл.h в группе Application/User
Предлагает мне путь в папку MDK-ARM и менять отказывается. Естественно, этот файл потом ***** не находится из main.c, куда ему и дорога заинклудиться. Если создаю руками в папке src (это которая Application/User) - находится, но проблемы вышеописанные.



P.S.

Помогите выяснить где *****. Вот проект кейл мдк арм 5.17. У меня выдает ошибку множественного дефайна. У всех так, или только у меня?

⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
 
Останнє редагування:
Та ладно, а вдруг он ровно его портирует :)

Помогите выяснить где *****. Вот проект кейл мдк арм 5.17. У меня выдает ошибку множественного дефайна. У всех так, или только у меня?
Переархивируй и перезалей. 235 ошибок распаковки.
 
Та ладно, а вдруг он ровно его портирует :)


Переархивируй и перезалей. 235 ошибок распаковки.

Нет там ошибок, но могу переархивировать. просто попробуй 7 распаковать программой 7zip.
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
.
 
Назад
Зверху Знизу