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
  • Data: 2012-05-07 21:42:46
    Temat: Re: [OT] Zarządzanie konfiguracją modułów kodu źródłowego
    Od: Paweł <r...@1...0.0.1> szukaj wiadomości tego autora
    [ pokaż wszystkie 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: