WinAvr i opcje kompilatora

Dec 20, 2007 1 Replies

Wtam Szanownych Czytelników Mam kilka pytañ zwi±zanych z opcjami kompilatora avr-gcc.



Mam projekt skladajacy sie z dwoch plikow start.c lcd4bit.c oraz lcd4bit.h (podaje taki przyk³ad dla uproszczenia przedstawienia problemu)


plik start.c zawiera:



/*******************************************************************/



#include <avr/io.h>


#include "lcd4bit.h"


int main(void)



{

lcd_init();



return 0;



}



plik lcd4bit.c zawiera:


*******************************************************

#include <avr/io.h>


#include "lcd4bit.h"



oraz definicje kilku funkcji


**************************************************


plik naglowkowy



zawiera definicje funkcji zawartych w pliku lcd4bit.c



#ifndef _LCD4BIT_H_



#define _LCD4BIT_H_ 1


#define LCD_PORT PORTC



#define LCD_DDR DDRC



#define LCD_D4 PC0



#define LCD_D5 PC1



#define LCD_D6 PC2



#define LCD_D7 PC3


#define LCD_DDR_EN_RS DDRB



#define LCD_PORT_EN_RS PORTB



#define LCD_EN PB4



#define LCD_RS PB5


void lcd_init(void);



void lcd_write_data(unsigned char a);



void lcd_write_register(unsigned char a);



#endif


Moje pytanie:


1)

Dlaczego pomimo braku wywolania funkcji lcd_write_data oraz lcd_write_register kompilator/linkier tworzy kod wynikowy w ktorym sa zawarte te funkcje. Przeciez jezeli nigdzie nie uzywamy tych funkcji to dlaczego nie zoptymizowal kodu i dolaczyc tylko te które zostaly wywolane?


2)

Dlaczego kompilator nie zglasza bledu (wydaje mi sie ze funkcje w pliku lcd4bit.h powinny byc zadeklarowane jako "extern") Kompilator przepuszcza kod bez zglaszania bledu.


3)

Co to za opcja kompilatora -Wall


4) jaka jest roznica pomiedzy opcj± -pedantic a -pedantic-error






U¿ytkownik "roxy" snipped-for-privacy@o2.pl napisa³ w wiadomo¶ci news:fkdsdm$qt3$ snipped-for-privacy@news.onet.pl...

Nie trzeba deklarowaæ funkcji jako extern, w przeciwieñstwie do zmiennych. Funkcje s± domy¶lnie "extern".

Warning all - wypisuje wszystkie ostrze¿enia w trakcie kompilacji.

Ró¿nica jest taka ¿e ten pierwszy nie generuje ostrze¿eñ.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required