Page 11 of 15

Re: IAR вопросик

PostPosted: 22 Nov 2012, 09:59
by lvd
deathsoft wrote:передается, ибо extern char arrr[1000];
либо extern const mymsg[]="хуйня муйня";

Нахуя тогда ехтерн, если каждый раз надо писать, что в этом массиве? Тогда уж проще char * и забить на лишние скобки.

Re: IAR вопросик

PostPosted: 22 Nov 2012, 12:26
by TS-Labs
DimkaM wrote:Осталось тока выяснить в каком месте туплю.

Так вот, banner - это синтакс еггог. Нет такой сучности, есть тока banner[] либо banner[хзчто].

Re: IAR вопросик

PostPosted: 22 Nov 2012, 12:50
by lvd
TS-Labs wrote:Так вот, banner - это синтакс еггог. Нет такой сучности, есть тока banner[] либо banner[хзчто].

Дану, чо и *banner нету?

Re: IAR вопросик

PostPosted: 22 Nov 2012, 13:19
by DimkaM
TS-Labs wrote:banner - это синтакс еггог
херс два. тыж мне сам ф чатике советовал вычислять полную(с нультерминатором) длинну константной строки с помощью sizeof(banner). И оно вычисляется.
lvd wrote:Дану, чо и *banner нету?
Это выдаст первый элемент массива *banner==banner[0]. sizeof(*banner)==1 (размер чара)

Re: IAR вопросик

PostPosted: 22 Nov 2012, 13:31
by lvd
DimkaM wrote:с помощью sizeof(banner).

Чот какой-то ахтунг. Мож strlen(banner)?

Re: IAR вопросик

PostPosted: 22 Nov 2012, 15:47
by DimkaM
strlen библиотечная, соответственно "extern const char banner[sizeof(BANNER)]" не прокатит, да и зетник упарится каждый раз длинну выщитывать. Ежли строка не константная, тада да, тока стрлен.
заместо sizeof() компилер константу подставляет.
аналог sizeof на асме
Code: Select all
    ld hl,endbanner-banner ;hl=sizeof(banner)

banner
    db "какаято хуйня",0
endbanner
аналог strlen на асме
Code: Select all
    ld hl,banner
    call strlen ;а там начинается пляска с подсчётом символов до нуля
banner
    db "какаято хуйня",0
endbanner

Re: IAR вопросик

PostPosted: 22 Nov 2012, 15:54
by lvd
заместо strlen от константной строчки хороший компилятор тоже может подставить константу. И кроме того, можно один раз прострленить и в переменную сохранить. И наконец, скоко раз стрленить надо это? два? три? наплевать и забыть.

Re: IAR вопросик

PostPosted: 22 Nov 2012, 15:57
by DimkaM
да мне ваще на длинну пабарабану, она у меня нигде не надо. компилер ругается, что типа не полную инфу предоставили о массиве

Re: IAR вопросик

PostPosted: 22 Nov 2012, 16:00
by lvd
extern char * сказали же. Никаких гемороев вообще.

Re: IAR вопросик

PostPosted: 22 Nov 2012, 16:19
by DimkaM
lvd wrote:Никаких гемороев вообще.

и получится
Code: Select all
banner
    dw ?0123
?0123
    db "какаято хуйня",0
а ежли мне нада напечатать с четвёртого символа - puts(&banner[3]), то выйдет чтото типа
Code: Select all
    ld de,(banner)
    ld hl,3
    add hl,de
    ex de,hl
    call puts
вместо
Code: Select all
    ld de,banner+3
    call puts