-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: Sebastian Biały <h...@p...onet.pl>
Newsgroups: pl.misc.elektronika
Subject: Re: [OT] Zarządzanie konfiguracją modułów kodu źródłowego
Date: Sun, 06 May 2012 15:49:54 +0200
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 50
Message-ID: <jo5vi6$g9s$1@inews.gazeta.pl>
References: <o...@j...jedi> <jo5tgs$asd$1@inews.gazeta.pl>
<o...@j...jedi>
NNTP-Posting-Host: 83.142.222.167
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: inews.gazeta.pl 1336312198 16700 83.142.222.167 (6 May 2012 13:49:58 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sun, 6 May 2012 13:49:58 +0000 (UTC)
X-User: sebo.bialy
In-Reply-To: <o...@j...jedi>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.16)
Gecko/20101125 Thunderbird/3.0.11
Xref: news-archive.icm.edu.pl pl.misc.elektronika:630682
[ ukryj nagłówki ]On 2012-05-06 15:30, Andrzej Ekiert wrote:
> Ale to mi w żaden sposób nie dotyka mojego problemu. Jeśli odwołam się w
> "../lib/i2c/i2ccore.c" do nowego parametru konfiguracyjnego C_I2C_SHMOO,
> to muszę go ręcznie zdefiniować w każdym i2cconfiguration.h w każdym
> projekcie.
#include "../lib/i2c/defaultconfiguration.h"
#include "i2cconfiguration.h"
To powinno zadzialać jak gdyby dziedziczenie parametrów. Możesz też uzyć
#ifndef FOO, #define FOO DEFAULR_FOO.
Ewentualnie, znacznie bezpieczniej, #ifndef FOO, #error "FOO not set"
> Jeśli zmienię nazwę i trochę funkcje parametru C_I2C_FOO na
> C_I2C_BAR, to znowu zmiana w każdym projekcie. Chodzi mi o sposób lub
> narzędzie do automatyzacji takich zmian: wykrywanie niedodanych
> definicji, eliminację przestarzałych definicji, itp.
Najlepiej, gdybys tego nie robił w ogóle. takie narzędzie jest
niebezpieczne. Wydaje mi się, że najbezpieczniej jest zdać się na
kompilator. Czyli raz na jakiś czas budujesz wszystkie swoje żywe
projekty w całości i poprawiasz tam gdzie padła kompilacja.
Podobnie do tego pomysłu działa konfigurator opcji kompilacji linuxa
(kernela). Możesz sobie wyobrazić że tak jest ich dużo i że pojawia się
niedostrzegana wcześniej warstwa - zależności. W dodatku są ustalane
ręcznie. Np. sterownik do foobar można kompilowac tylko wtedy gdy jest
scsi itp. Takie zalezności są cieżkie w utrzymaniu bo nie wynikają
wprost z kodu tylko z jakieś metawiedzy poza.
> Samo definiowanie konfiguracji per-projekt i jej #include w plikach
> biblioteki to mam rozwiązane w miarę elegancko. Boli mnie tylko potrzeba
> ręcznego czyszczenia konfiguracji per-projekt w wypadku zmian w opcjach
> oferowanych przez bibliotekę.
Tego nie unikniesz w przypadku ogólnym. Jesli i2cdriver_init przyjmie 2
parametry a nie jeden to i tak musisz zmienić *wszystkie* projekty.
Wielu programistów C wpada tutaj na genialny pomysł uzycia makr albo
domyslnych parametrów, ale do ślepa uliczka. Tak czy inaczej refaktoring
bibliteki generuje zmiany po stronie klientów.
Jesli masz klienta martwego, ale mimo to chcesz utrzymać kompilację, to
czasami wystarczy kod forkować, czyli #include
"../lib/i2c/v2/i2ccode.c". Nie jest to eleganckie, ale w przypadku
embedded pozwala projekt zamrozić. Problemem jest backportowanie poprawek.
Ten sposob jest uzywany też na linuxie, wystarczy zobaczyć katalog /lib
żeby zauważyć wiele róznych wersji bibliotek. Głównie dla supportu
starych klientów.
Następne wpisy z tego wątku
- 06.05.12 15:54 Michoo
- 06.05.12 15:59 Zbych
- 06.05.12 16:10 Andrzej Ekiert
- 06.05.12 16:24 Jacek Domański
- 06.05.12 16:28 Zbych
- 06.05.12 16:42 Sebastian Biały
- 06.05.12 16:50 Andrzej Ekiert
- 06.05.12 16:55 Michoo
- 06.05.12 17:08 Andrzej Ekiert
- 06.05.12 17:21 mk
- 06.05.12 17:35 Sebastian Biały
- 06.05.12 17:41 marek
- 06.05.12 17:41 Andrzej Ekiert
- 06.05.12 18:18 mk
- 06.05.12 18:32 Zbych
Najnowsze wątki z tej grupy
- Thunderbird i dysk...
- opornosc falowa
- 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...
Najnowsze wątki
- 2025-07-23 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-23 Warszawa => Inżynier oprogramowania .Net <=
- 2025-07-23 Kraków => Kotlin Developer <=
- 2025-07-23 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-07-23 Warszawa => Java Developer <=
- 2025-07-23 Wrocław => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-07-22 Genialna toaleta Urobot, automatycznie badająca mocz i kał z Taiwanu
- 2025-07-22 Thunderbird i dysk...
- 2025-07-22 Warszawa => Programista Full Stack .Net <=
- 2025-07-22 Warszawa => Software .Net Developer <=
- 2025-07-22 Warszawa => Asystent ds. Sprzedaży i Rozwoju Klienta <=
- 2025-07-22 Warszawa => Sales Assistant and Customer Development Specialist <=
- 2025-07-22 antyfaszystka
- 2025-07-22 W ogóle nie widać...
- 2025-07-22 I znowu inżynierowie i inżynierzy...