C, varning datatyp

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
bearing
Inlägg: 11670
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: C, varning datatyp

Inlägg av bearing »

Ja, kunder som läser kod är nog bra kunder.

Men vad gällde de här "#if"-grejerna då?
Är väl en praktisk sak?
Lite rörigt kanske, men ibland finns väl inget val?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46916
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: C, varning datatyp

Inlägg av TomasL »

Så sant så, men många "gurus" använder #if mm till en förbannelse, så det är fullständigt omöjligt att klura ut vad som egentligen händer.

Har själv en stycke sådan kod, köpte ett bibliotek för ett par år sedan, det är i princip omöjligt att följa koden pga alla #if, då det knappt går att veta vilken kod som är aktiv eller inte.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: C, varning datatyp

Inlägg av lillahuset »

Jag håller gudskelov mest på med ARM nuförtiden. Men både Rabbit och PIC sticker upp sina fula nunor ibland. :)

Jag ser mig absolut inte som en "guru" utan det handlar nog mer om osäkerhet om man kan "kasta bort" kod. :(
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46916
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: C, varning datatyp

Inlägg av TomasL »

Problemet för vår del är att libbet är "portabelt" dvs det skall funger på i princip alla arkitekturer (och det gör det säkert), vilket gör att det i princip finns en #ifdef på varannan kodrad, typ.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: C, varning datatyp

Inlägg av lillahuset »

Återanvändning av kod har sina sidor som inte alltid förstås av "projektledare" och annat löst folk.
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: C, varning datatyp

Inlägg av superx »

Jag jobbar med en stor prestandakänslig kodbas där stora delar körs på allt från 16- till 64-bitarsarkitekturer. Om prestanda ska bli bra är #ifdef oundvikligt.

int16-typerna etc. har sina användningsområden men är dock inte så användbara som man skulle kunna hoppats på i praktiken. I de fal där man verkligen behöver ange en exakt ordlängd så har man ju oftast en bra anledning. Ja ser tre typfall i koden jag arbetar med:
1) Man behöver prata med något I/O-register etc. Ordlängden är viktig, men koden är ändå inte portabel av naturliga skäl.
2) Av prestandaskäl behöver man göra "smarta" bitmanipulationer. T.ex. maska några bitar för att ta absolutbeloppet av flyttal. Den här koden är inte heller portabel.
3) Definiera datatyper för kommunikation mellan olika processorer. Perfekt användningsfall! Äh, nä de hade visst olika endian. Så det funkade inte nu heller.

Dock kan int16 vara en bra signal till utvecklare om att den här koden gör konstiga grejer. Tänk på det när du byter processor! Det kan också vara användbart för att signalera till kompilatorn att använda en speciell instruktion. T.ex. 16x16 bitara multiplikation med 32-bitars resultat.

Det finns säkert andra fall där det funkar bättre men detta är min erfarenhet iaf.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46916
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: C, varning datatyp

Inlägg av TomasL »

Naturligtvis, i vårt fall är det dock så snårigt att vi kommer att skrota det så fort vi får tid, och skriva ett eget i stället.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: C, varning datatyp

Inlägg av lillahuset »

superx: :tumupp:
Skriv svar