-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!goblin1!goblin.stu.neva.ru!postnews.google.com!news2.google.com!npeer0
1.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!
nx01.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.new
s.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-
mail
Date: Mon, 07 May 2012 01:25:53 +0200
From: mk <reverse_lp.pw@myzskm>
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20120428 Thunderbird/12.0.1
MIME-Version: 1.0
Newsgroups: pl.misc.elektronika
Subject: Re: [OT] Zarządzanie konfiguracją modułów kodu źródłowego
References: <o...@j...jedi> <jo5tgs$asd$1@inews.gazeta.pl>
<o...@j...jedi> <jo5vi6$g9s$1@inews.gazeta.pl>
<o...@j...jedi>
<4fa696e8$0$1312$65785112@news.neostrada.pl>
<jo65o7$oc$1@inews.gazeta.pl>
<4fa6a448$0$26682$65785112@news.neostrada.pl>
<jo6ann$crm$1@inews.gazeta.pl>
<4fa6d1b3$0$26685$65785112@news.neostrada.pl>
<jo6lis$c5o$1@inews.gazeta.pl>
In-Reply-To: <jo6lis$c5o$1@inews.gazeta.pl>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 94
Message-ID: <4fa70881$0$26697$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 178.42.199.30
X-Trace: 1336346753 unt-rea-a-01.news.neostrada.pl 26697 178.42.199.30:2990
X-Complaints-To: a...@n...neostrada.pl
X-Received-Bytes: 5169
Xref: news-archive.icm.edu.pl pl.misc.elektronika:630722
[ ukryj nagłówki ]W dniu 2012-05-06 22:05, Sebastian Biały pisze:
> On 2012-05-06 21:32, mk wrote:
>>> Uzywając def.
>>> Np. tak:
>>> default-config: #define UART_STOP_BITS 1
>>> project-config: #include "default.h", #define UART_STOP_BITS 2
>> Redefiniowanie makra nową wartością jest nielegalne!!!
>
> Masz rację, jak zwykle pisze skrótami i nie wszystko podaje. Oczywiscie
> że jest #undef ale tylko dlatego że nie da się zrobić wprost #define
> ponownie (w gcc da się). Samo undef jest wyłacznie wytrychem a nie
> sednem metody. Sendem metody jest ponowne zdefiniowanie symbolu
> nadpisując default.
GCC jest tu tolerancyjny, ale i tak daje warningna.
> Jak napisałem - dla mnie nie ma znaczenia którą metodą inkludowania
> wybierzesz - obydwie sa mizerne i sprwadzają się do tej samej sieczki w
> define.
Takie uroki tworzenia kodu uniwersalnego. Sieczki programowania
generycznego C++ często wcale nie wyglądają lepiej :-)
>> jest niezgodne np. z MISRA-C i w ogóle niepotrzebnie zaciemnia plik
>> konfiguracji użytkownika.
>
> Nie mam targetu na misra-c. Więc ich zalecenia nie są dla mnie kluczowe.
> Czy zaciemnia - to już inna sprawa. W odwrotnej konfiguracji zaciemnia
> #ifdef. Tak czy inaczej - to nie wygląda dobrze.
Ale to z plikiem konfiguracji użytkownika użytkownik będzie w pierwszej
kolejności pracować. Nadawanie konfiguracji domyślnej to już bebechy...
Nie ma co sobie obrzydzać, tak wygląda język C :-)
> Prawde mowiąc korzystam znacznie częściej ze statycznego polimorfizmu.
> #define to odprysk w kilku miejscach.
>
> Mam taki nieskończony projekcik (który strasznie zaniedbałem, ale
> obiecuje poprawę) na SF, możesz sobie zerknąć co mam na myśli:
>
> http://sourceforge.net/projects/microheap/
Inny język, inna bajka... Świecą mi się oczy jak widzę takie rzeczy,
choć C++ daleki jest w programowaniu generycznym od tego co można sobie
wymarzyć. W wolnej chwili nie omieszkam lepiej się przyjrzeć projektowi.
I dla odmiany (też jeśli chodzi o rozwiązania generyczne i też jeśli
chodzi o zarządców pamięci): mam ostatnio do czynienia z biblioteczką
lwIP (stos TCP/IP). Mam tu w szczególności na myśli pule pamięci z tego
projektu (pliki memp.c, memp_std.h).
Wygląda to mniej więcej tak:
const u16_t memp_sizes[MEMP_MAX] = {
#define LWIP_MEMPOOL(name,num,size,desc) LWIP_MEM_ALIGN_SIZE(size),
#include "lwip/memp_std.h"
};
i na końcu pliku memp_std.h odwołujemy makro LWIP_MEMPOOL.
Plik memp_std.h tworzy ciało listy inicjalizacyjnej tablicy memp_sizes.
następnie znowu:
static const u16_t memp_num[MEMP_MAX] = {
#define LWIP_MEMPOOL(name,num,size,desc) (num),
#include "lwip/memp_std.h"
};
itd...
W ten sposób dzięki podmienianiu definicji LWIP_MEMPOOL obskoczono
wytwarzania wszystkich struktur danych niezbędnych do pracy pól pamięci
:-) Grrrrrrrrrrrrrrr... No i teraz próbuj to człowieku debugować... Aż
się prosi o szablony i trejty (ale to nie C++).
Ale w boost też tą technikę (redefiniuj makro i włącz nagłówek) się
stosuje... Paskustwo!
>> sygnalizować już na wczesnym etapie rozpoznania konfiguracji użytkownika
>> np. zgodność wersji modułu bibliotecznego i jej użytkownika, czy wiele
>> innych parametrów o globalnym charakterze.
>
> W moim przypadku nie sposób w momencie inkludowania default wykryć czy
> dopuszczalne jest mieć uart o 2 bitach stopu. Przy czym "nie sposób" w
> sensie, że jakikolwiek sposób powoduje wyciek wiedzy o hardware do
> miejsca o innym poziomie abstrakcji. Im niej zależności tym lepiej dla
> projektu.
Oczywiście, że taki warunek jest związany ściśle z implementacją
hardware, więc warunek ten powinien być możliwie blisko tyłka drajwera
tego modułu.
pzdr
mk
Następne wpisy z tego wątku
- 07.05.12 02:21 Michoo
- 07.05.12 15:52 Nijak
- 07.05.12 21:23 Andrzej Ekiert
- 07.05.12 21:42 Paweł
- 07.05.12 22:46 RoMan Mandziejewicz
- 08.05.12 07:56 Paweł
- 08.05.12 08:50 RoMan Mandziejewicz
- 08.05.12 15:13 janusz_kk1
- 09.05.12 09:07 Artur M. Piwko
- 09.05.12 10:03 janusz_kk1
- 25.05.12 16:09 Artur M. Piwko
Najnowsze wątki z tej grupy
- Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- Tani zakup z ali?
- w czasach LED komary mają ciężko
- walizka z kodami
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
- Fajny film widziałem...
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
Najnowsze wątki
- 2025-07-20 Absurdalny zakaz fotografowania będzie nowelizowany
- 2025-07-20 Takie tam...
- 2025-07-20 https://newsgrouper.org/pl.soc.prawo blokuje posty: 154 posts blocked.
- 2025-07-20 Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- 2025-07-20 Tani zakup z ali?
- 2025-07-19 Wrocław => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-07-19 Chiny => Koordynator Produkcji / Przedstawiciel ds. rozwoju produktu <
- 2025-07-19 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-19 China => Production Coordinator / Representant Product Dev <=
- 2025-07-19 Warszawa => Specjalista wsparcia IT - analiza techniczna sprzętu IT <
- 2025-07-19 Warszawa => Strategic Account Manager <=
- 2025-07-19 Warszawa => Key Account Manager IT <=
- 2025-07-19 Skazany za zabójstwo a ofiara żyje
- 2025-07-19 Zakrzewo => SAP HCM Consultant <=
- 2025-07-19 Poznań => Konsultant SAP HCM <=