/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
fjerne unreferereded funktioner under link~
Fra : Ukendt


Dato : 29-05-06 19:46

Hej,

På de embeddede platforme jeg har arbejdet med har jeg vænnet mig til at
compileren og linkeren er i stand til at fjerne urefererede funktioner. Jeg
synes umiddelbart at det er handy når man laver to versioner af et program
at man bare ifdeffer kaldet af funktionen, så fjerner linkeren den
pågældende funktion og alle funktioner der kun kaldes af denne, og alle
tabeller der kun referes af disse funktioner, der nu er cuttet ud.

Mener I at dette er en almindelig feature i embeddede compilere ?

Mener I at dette er en brugbar feature ?
(Man kan jo klare sig uden, ved at udvidde #ifdef helvedet)

Grunden til sp. er at det overraskede mig at GCC linkeren generelt (eller
måske kun til Atmel AVR platformen), ikke kan dette.

tpt




 
 
Eric Jensen (24-06-2006)
Kommentar
Fra : Eric Jensen


Dato : 24-06-06 10:00


"Troels Thomsen" <nej tak ...> skrev i en meddelelse
news:447b4143$0$148$edfadb0f@dread16.news.tele.dk...

> Mener I at dette er en almindelig feature i embeddede compilere ?

Det er meget almideligt i de compilere/linkere jeg bruger og kender til. Men
forment understøtter alle det ikke.

> Mener I at dette er en brugbar feature ?
> (Man kan jo klare sig uden, ved at udvidde #ifdef helvedet)

Jeg synes det er bedst, at bruge #if defined macroen. Det giver en god
indikation om hvor og i vilke tilfælde denne funktion skal inkluderes,
vilket er meget rart hvis man læser andres kode. Men det er da brugbart nok,
at linkeren fjerner funktion du selv har glemt, at fjerne eller "if-deffe",
af en eller anden grund.

For eksemple kan man savne atoi() når man skriver kode der skal compiles på
en linux boks. Her synes jeg det giver mest mening at "if-deffe" sin egen
version, som kun skal compiles hvis det er linux. Og så er man også sikker
på at, undgå konflikter når programmet compiles på en platform der har
atoi() i forvejen. Og har du et større project kan du spare lidt tid ved, at
compileren ikke skal oversætte kode du aligevel ikke skal bruge.

#if defined (__linux__)
int atoi(const char *str) {
// kode
}
#endif

//eric



Kent Friis (24-06-2006)
Kommentar
Fra : Kent Friis


Dato : 24-06-06 12:19

Den Sat, 24 Jun 2006 10:59:41 +0200 skrev Eric Jensen:
>
> For eksemple kan man savne atoi() når man skriver kode der skal compiles på
> en linux boks.

WTF?

ATOI(3) Linux Programmer's Manual ATOI(3)


NAME
atoi - convert a string to an integer.

SYNOPSIS
#include <stdlib.h>

int atoi(const char *nptr);

DESCRIPTION
The atoi() function converts the initial portion of the
string pointed to by nptr to int.

Mvh
Kent
--
"So there I was surrounded by all these scary creatures
They were even scarier than what Microsoft call features"
- C64Mafia: Forbidden Forest (Don't Go Walking Slow).

Eric Jensen (24-06-2006)
Kommentar
Fra : Eric Jensen


Dato : 24-06-06 12:49


"Kent Friis" <nospam@nospam.invalid> skrev i en meddelelse
news:449d1f91$0$15784$14726298@news.sunsite.dk...
> Den Sat, 24 Jun 2006 10:59:41 +0200 skrev Eric Jensen:
>>
>> For eksemple kan man savne atoi() når man skriver kode der skal compiles
>> på
>> en linux boks.
>
> WTF?
>
> ATOI(3) Linux Programmer's Manual ATOI(3)

Skulle havde været itoa()

//eric



Søg
Reklame
Statistik
Spørgsmål : 177429
Tips : 31962
Nyheder : 719565
Indlæg : 6407948
Brugere : 218878

Månedens bedste
Årets bedste
Sidste års bedste