-
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
- Waga z legalizacją
- Wietnam wykłada 500M$ i chce zbudować fabrykę za 50G$
- Pendrive zdycha, czy coś jeszcze innego? Problem z plikami.
- Odkurzacz Smapp Dynamic - dawny Zelmer
- Nagra IV i zewnętrzny pilot
- Fejk muzyczny czy nie fejk
- Raspberry Pi 3 Model B+
- Kuchenka elektryczna
- test
- Cewka elektrozaworu
- zapytanie o chip r5f21275nfp
- nie naprawiam więcej telewizorów
- Zrobił TV OLED z TV LCD
- Zasilacz USB na ścianę.
- Gniazdo + wtyk
Najnowsze wątki
- 2025-03-23 Waga z legalizacją
- 2025-03-23 Nowy VW 208 :-)
- 2025-03-23 ile Tesla ma gwarancji?
- 2025-03-22 OT Silnik sie przegrzewa
- 2025-03-22 Przenoszenie przez wifi na nowego Androida
- 2025-03-22 Warszawa => Senior Account Manager <=
- 2025-03-22 Wrocław => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produk
- 2025-03-22 Warszawa => Spedytor Międzynarodowy <=
- 2025-03-22 Warszawa => NMS System Administrator <=
- 2025-03-22 Warszawa => Analityk IT (projekty z obszaru telco) <=
- 2025-03-22 Orzeczenie TSUE
- 2025-03-22 Warszawa => Operations Support Systems (OSS) Team Leader <=
- 2025-03-22 Warszawa => Scrum Master <=
- 2025-03-22 Warszawa => Senior Account Manager <=
- 2025-03-22 Warszawa => BI Developer / Analityk BI <=