eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika[OT] Zarządzanie konfiguracją modułów kodu źródłowegoRe: [OT] Zarządzanie konfiguracją modułów kodu źródłowego
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mail
    From: Paweł <r...@1...0.0.1>
    Newsgroups: pl.misc.elektronika
    Subject: Re: [OT] Zarządzanie konfiguracją modułów kodu źródłowego
    Date: Mon, 07 May 2012 21:42:46 +0200
    Organization: ICM, Uniwersytet Warszawski
    Lines: 120
    Message-ID: <jo98jm$t0l$1@news.icm.edu.pl>
    References: <o...@j...jedi> <jo5tgs$asd$1@inews.gazeta.pl>
    <o...@j...jedi>
    NNTP-Posting-Host: 89-78-237-144.dynamic.chello.pl
    Mime-Version: 1.0
    Content-Type: multipart/mixed; boundary="nextPart3088671.KnkjRG6ItK"
    X-Trace: news.icm.edu.pl 1336419766 29717 89.78.237.144 (7 May 2012 19:42:46 GMT)
    X-Complaints-To: u...@n...icm.edu.pl
    NNTP-Posting-Date: Mon, 7 May 2012 19:42:46 +0000 (UTC)
    User-Agent: KNode/4.8.3
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:630753
    [ ukryj nagłówki ]

    Andrzej Ekiert wrote:

    > Dnia 06-05-2012 o 15:15:04 Sebastian Biały <h...@p...onet.pl>
    > napisał(a):
    >
    >> Zapropnuje sposób trywialny, być może akurat będzie w sam raz:
    >>
    >> *** i2cdriver.c ***
    >>
    >> #include "i2cconfiguration.h"
    >> #include "../lib/i2c/i2ccore.c"
    >> #include "../lib/i2c/i2chardware.c"
    >>
    >> *** i2cdriver.h ***
    >>
    >> #include "i2cconfiguration.h"
    >> #include "../lib/i2c/i2cinterface.h"
    >>
    >> Plik i2cconfiguration.h jest częscią konkretnego projektu, podobnie jak
    >> i2cdriver.c.
    >>
    >> I tyle. W i2cconfiguratiion stado #define per projekt. W plikach lib/i2c
    >> (h i c) od groma #ifdef na każdy wariant.
    >>
    >
    > 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. 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.
    >
    > 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ę.

    czasami w przypadku koniecznosci zachowania wstecznej kompatybilnosci
    biblioteki stosuje sie w c++ namespace-inlining (a w c wersjonowanie
    symboli na poziomie skryptu gnu/linkera).

    na zalaczonym przykladzie masz w bibliotece obslugujacej costam
    wersje v1, ktora byla na poczatku wszechswiata :) potem programista
    wpadl na pomysl by rozwiazanie ulepszyc i dodal wersje v2,
    ale, ze lubil uzytkownikow, to nie chial ich zmuszac do poprawiania
    w starych projekatach wszystkich wywolan api i za pomoca prostego
    #define USE_LEGACY w aktualnej wersji biblioteki udostepnia stary
    interfejs/implementacje. autor biblioteki wewnetrznie (w lib.cpp)
    juz sobie rozwizuje problem jak stare api przempowac na aktualna
    implementacje, a uzytkownicy sa szczesliwi.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: