но не нужно. никогда не стоит соглашаться с отсуплением от общепринятых правилАlex писал(а):Инклюдить .c можно, но
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
но не нужно. никогда не стоит соглашаться с отсуплением от общепринятых правилАlex писал(а):Инклюдить .c можно, но
Никогда не говорите "никогда"ARV писал(а):никогда
это вы про это:Аlex писал(а):Я привёл пример ситуации, в которой не зазорно отступить от этих правил
?Аlex писал(а):Иногда полезно подключить определённый .c-файл, в зависимости от каких либо настроек
я прекрасно понял, что вы имели ввидуАlex писал(а):Я имел в виду настроки проекта в виде дефайнов.
это даАlex писал(а): makefile - это нечто таинственное, куда лазить не стоит, чтобы ничего не поломать
Да не привык я ни к чему, я так не делаюARV писал(а):зря вы привыкаете (привыкли) считать нужным костыль
Код: Выделить всё
obj1= vortex.obj trzi.obj tr_061.obj help0.obj calc1.obj chsp.obj wal3.obj wal.obj
obj2= wal1.obj c_t4.obj calce.obj calc1.obj c_prin.obj cale1.obj c_cale.obj
obj3= ctr_061.obj tr_062.obj ctr_062.obj mena3.obj trg.obj ls_01.obj
obj4= rek.obj csr.obj c_t2.obj ls.obj ls_00.obj tmes_sum.obj
obj5= tprikl.obj c_trz1.obj cpr.obj trz_prin.obj tgru_kod.obj ctpr.obj help1.obj
obj6= vvv0.obj c_doh.obj ctar.obj sank.obj
// описание всех файлов входящих в проекте - для линкера
.prg.obj:
clipper $** -m-n
.c.obj:
cl /AL /Oalt /c /Zl /FPc /Gs /G2 $*.c
.asm.obj:
masm /Dmodel=large /Mx /DcLang $*.asm;
//как из ,prg(.c;.asm) сделать ,obj - указания для компиляторов
trzi.obj: trzi.prg
sank.obj: sank.prg
tr_061.obj: tr_061.prg
vortex.obj: vortex.prg
help0.obj: help0.prg
help1.obj: help1.prg
calc1.obj: calc1.prg
cale1.obj: cale1.prg
tr_062.obj: tr_062.prg
mena3.obj: mena3.prg
trg.obj: trg.prg
ls_01.obj: ls_01.prg
rek.obj: rek.prg
ls.obj: ls.prg
tmes_sum.obj: tmes_sum.prg
tprikl.obj: tprikl.prg
trz_prin.obj: trz_prin.prg
tgru_kod.obj: tgru_kod.prg
ls_00.obj: ls_00.prg
vvv0.obj: vvv0.prg
wal3.obj: wal3.c ctrz.h
wal.obj: wal.c ctrz.h
wal1.obj: wal1.c ctrz.h
c_t4.obj: c_t4.c ctrz.h
calce.obj: calce.c ctrz.h
c_prin.obj: c_prin.c ctrz.h
c_cale.obj: c_cale.c ctrz.h
ctr_061.obj: ctr_061.c ctrz.h
ctr_062.obj: ctr_062.c ctrz.h
csr.obj: csr.c ctrz.h
c_t2.obj: c_t2.c ctrz.h
c_trz1.obj: c_trz1.c ctrz.h
cpr.obj: cpr.c ctrz.h
ctar.obj: ctar.c ctrz.h
c_doh.obj: c_doh.c ctrz.h
ctpr.obj: ctpr.c ctrz.h
chsp.obj: chsp.asm
\vortex\vortex.exe: $(obj1) $(obj2) $(obj3) $(obj4) $(obj5) $(obj6)
rtlink @ln.lnk
// указания для линкера
В примере показано работа с трех язъках - Clipper, C и ASM. Но ето бъл 1986г. и "класическое" СARV писал(а):что и в makefile есть средства вариантов сборки проекта из разного набора исходников
Код: Выделить всё
DDRB=0b11111111;
PORTB=0b00000000;
Код: Выделить всё
DDRB=0b11111111;
Возможно. Мне после gcc показалось что вы говорите о чем-то вроде секции .noinitZ_h_e писал(а):Добавлю про протеус. Есть область память, которую МК не инициализирует
Код: Выделить всё
float CalcOL(uint8_t* pbuf, uint16_t lenght, uint16_t cursegm)
{
float addsegm, result;
uint16_t worksegm;
....
stTg.DWord = ....; // считает правильно
addsegm = stTg.DWord * (float)(*(pbuf + cursegm) - *(pbuf + cursegm)); // считает правильно
// stTg.DWord // - глобальная переменная
worksegm = lenght - cursegm; // считает правильно
result = gLS * (float)worksegm; // периодически ошибается !!!
// float gLS; //- глобальная константа
result += addsegm;
return result;
}
Код: Выделить всё
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
stFloat.DWord = result; //!!!!!!!!!!!!!!!!!!!!
for(uint8_t k=0;k<4;k++) //!!!!!!!!!!!!!!!!!!!!
stTest16[k] = stFloat.Byte[3-k]; //!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
наталкивался. так и не понял - то ли сам дурак, то ли баг GCC. не уверен, что ваш случай и мой одинаковы, но попробуйте мой метод: подключите к проекту математическую библиотеку, т.е. используйте опцию -lm при компиляции._dark писал(а):кто нибудь наталкивался на то, что GCC считает умножение двух аргументов смешенного типа неправильно?
если бы было так я был бы счаслив! ... (как мне мало нужно для счастьяKavka писал(а):_dark, может переполнение или уход в "минус" происходит? А у вас в коде uint16.
Код: Выделить всё
worksegm = lenght - cursegm;Код: Выделить всё
result = gLS * (float)worksegm;Код: Выделить всё
worksegm = lenght - cursegm - 1;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
stInt.Word = worksegm; //!!!!!!!!!!!!!!!!!!!!
for(uint8_t k=0;k<2;k++){ //!!!!!!!!!!!!!!!!!!!!
stTest16[k] = stInt.Byte[1-k]; //!!!!!!!!!!!!!!!!!!!!
}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
ARV похоже это правильный пинок...ARV писал(а):... подключите к проекту математическую библиотеку, т.е. используйте опцию -lm при компиляции.
.