При переходе с IAR в WinAVR столкнулся с тем что (код упрощен):
1 файл "Define.c":
#include "Define.h"
int main(void)
{
;
}
2 файл "Define.h":
#ifndef _DEF_H
#define _DEF_H
const unsigned char code[3] = {0x18, 0xDE, 0x89};
#endif
3 файл "Func.с":
#include "Func.h"
void f(void)
{
;
}
4 файл #include "Func.h":
#include "Define.h"
выдает сообщение об ошибке хоть и есть директива #ifndef, которая должна исключить повторные определения. Но если убрать инициализацию, ошибки нет.