BerZerK-ku писал(а):
Вы уверены что код и озвученные результаты совпадают? Проверьте. Тот пример что я привел, при компиляции дает разницу в 2 байта
вот ведь некоторые умеют достать! ну что ж, извольте. вы сомневались в результатах? они-таки на самом деле подозрительные!!! цитирую ваш код, чтобы не было сомнений:
BerZerK-ku писал(а): НУ раз так, вот пример попроще:
Код: Выделить всё
char b, c ,d;
struct var
{
char b;
char c;
char d;
} str;
void fs(char v)
{
var *st = &str;
//st->b = 3;
st->c += v;
st->d -= v;
}
void f(char v)
{
//b = 4;
c += v;
d -= v;
}
__C_task void main(void)
{
while(1)
{
//fs(3);
f(3);
}
}
беру AVR Studio 4.18, WinAVR 20100110, создаю проект для atmega88 Simulator 2. ввожу этот код в окно редактора, компилирую:

это свидетельствует о том, что сам автор гневных постов в мой адрес НЕ КОМПИЛИРОВАЛ СВОЙ ПРИМЕР! он абсоютно нерабочий, в отличие от моего, который работает, но не так, как кому-то хотелось бы.
ладно, раз я сам не без греха, делаю скидку на опечатки, исправляю явное:
Код: Выделить всё
typedef struct {
char b;
char c;
char d;
} var;
var str;
и естественно убираю бредовое
компилирую после исправления ошибок. что имеем? вот что:

причем это и для варианта
Код: Выделить всё
int main(void)
{
while(1)
{
fs(3);
//f(3);
}
}
и
то же самое для варианта
Код: Выделить всё
int main(void)
{
while(1)
{
//fs(3);
f(3);
}
}
о чем это говорит? о том, что компилятор после анализа этого бредового кода пришел к выводу, что программа НЕ ДЕЛАЕТ ВООБЩЕ НИЧЕГО, и не стал вставлять в код ничего полезного, кроме традиционного для Си кода инициализации ОЗУ, установки стека, ну и таблицы векторов прерываний - В ОБОИХ СЛУЧАЯХ. т.е. пример бредовый - что было понятно сразу (но, конечно, понятно лишь тому, кто на самом деле имеет опыт ралоты с WinAVR, а не просто начитался каких-то бумаг, которыми подтирались еще мамонты). кстати, чтобы не быть голословным, вот листинг того, что наделал компилятор для main:
собственно говоря, мне кажется, вопрос исчерпан полностью... возможно теперь болтун соблаговолит сделать столь же убийственный разбор моих кодов
да, вот еще решил добавить

вот листинг компиляции обоих функций из мощного примера болтуна:

как говорится, найдите отличия

битва с дураками проиграна, победители торжествуют. слава победителям!