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