-
Data: 2012-05-06 19:00:34
Temat: Re: [OT] Zarządzanie konfiguracją modułów kodu źródłowego
Od: Sebastian Biały <h...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 2012-05-06 18:18, mk wrote:
>> Nie. plik lokalny dla projektu nadpisuje parametry domyślne.
> Używając #undef???
Uzywając def.
Np. tak:
default-config: #define UART_STOP_BITS 1
project-config: #include "default.h", #define UART_STOP_BITS 2
> IMO zdecydowanie lepsze jest jednak włączenie najpierw pliku z
> konfiguracją użytkownika, a potem nagłówek z konfiguracją domyślną -- to
> zresztą powszechna praktyka.
Zdecydowana lepszośc tutaj dyskusyjna. Oba rozwiązania działają.
> Plik nagłówkowy "defaultconfiguration.h" nie definiuje parametrów już
> zdefiniowanych (#ifndef), a jedynie te które jeszcze nie zostały
> zdefiniowane nadając im wartości domyślne (+ ewentualnie jakiś komunikat
> przy pomocy #warning), obliczając je (np. na podstawie parametrów
> podanych przez użytkownika) lub walnąć błędem (#error) jeśli parametr ma
> być obligatoryjne określony przez użytkownika.
W drugą stronę działa to tak samo (nie)skutecznie bez #ifndef, kwestia
implementacji.
IMO to nie konfiguracja powinna szukać bledów w #define i wyliczać
pośrednie parametry tylko implementacja. Więc detekcje źle ustawionych
parametrów robię w pliku c. To dlatego że to w pliku c wiadomo jaka
konfiguracja jest nielegalna, np. uart avr ie obsługuje 2 bitów stopu.
Gdyby te zależności miał wyliczać globalny plik default-config.h to
wiedza o uart avr wyciekła by z implementacji specyficznej dla hardware
do globalnej przestrzeni gdzie ją ciężko utrzymać.
W moim rozwiązaniu zależności są detektowane i obliczane w c drivera bo
nie ma innej możliwości. I dzieki temu plik default-config jest czysty o
specyficznej wiedzy o hardware. Nie zawsze, ale zazwyczaj. Innymi słowy
wszystko co dotyczy avr znajduje się w katalogu /avr/ i nie przecieka do
inych plików.
Przy czym żeby było jasno - oba podejścia są tak samo mizerne.
Następne wpisy z tego wątku
- 06.05.12 21:32 mk
- 06.05.12 22:05 Sebastian Biały
- 06.05.12 22:25 mk
- 06.05.12 23:02 Andrzej Ekiert
- 07.05.12 01:25 mk
- 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
Najnowsze wątki z tej grupy
- 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
- Aliexpress zaczął oszukiwać na bezczelnego.
Najnowsze wątki
- 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 <=
- 2025-03-22 Warszawa => IT Recruiter <=
- 2025-03-21 Zakaz wjazdu
- 2025-03-21 Nie zawsze wchodzi jedynka