Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
ap это адрес на стек аргументов, если ты его дальше передашь то при повторном va_start получчишь адрес адреса а не адрес аргументов
Отправлено
ы
(213.79.108.215)
19 января 2010, г. 16:39
В ответ на:
да ? а " ap " это что по твоему ,?
отправлено DASM 19 января 2010, г. 16:30
Составить ответ
|
Вернуться на конференцию
Ответы
напиши функцию my_printf где внутри вызывается стандартная printf ?
-
ы
(19.01.2010, 16:43:9
213.79.108.215
,
пустое
)
Для таких случаев есть (ссылка). А передавать именно так как ты хочешь не выйдет по определению
-
1111111
(19.01.2010, 17:22:4
95.133.65.45
,
пустое
,
ссылка
)
почему не выйдет? вышло же! а чем мне эта функция по ссылке поможет?
-
ы
(19.01.2010, 17:27:4
213.79.108.215
,
пустое
)
Потому что
-
1111111
(19.01.2010, 17:59:32
95.133.239.143
, 370 байт)
я и говорю, надо подстраховаться на все случаи. К внутренней функции (в примере она ' f ') у меня нет доступа, она реализована "гдето-там", зато я знаю с какими параметрами я в конце концов буду ее вызывать, к этим 4 можно дописать еще 4 и т.д. т.е. узнать макс объем аргументов в критическом случае и вперед
-
ы
(19.01.2010, 18:02:44
213.79.108.215
,
пустое
)
Можно сделать только считав руцями все аргументы в промежуточные переменные и уже их подсунув внутренней функции
-
1111111
(19.01.2010, 18:14:51
95.133.239.143
,
пустое
)
зачем во внутренние переменные? задача состоит в том, что весь стек переменных аргументов внешней функции надо перегнать во внутреннюю, всетаки попробуй с u8_t чуть ниже:)
-
ы
(19.01.2010, 18:21:44
213.79.108.215
,
пустое
)
т.е. даже "разбирать" форматную строку не надо, а взять с запасом, о чем я и говорил в 1 посте. Вобщем, я так понимаю, других вариантов нет
-
ы
(19.01.2010, 18:23:0
213.79.108.215
,
пустое
)
с принтфом это просто пример, она библиотечная, соответственно в стандартной библе есть ее модификации. Но мне, ессно, не в принтф надо передавать а в другую НЕ библиотечную...
-
ы
(19.01.2010, 17:30:25
213.79.108.215
,
пустое
)
только 1 поправка, во избежании нежелательных косяков, делать лучше так
-
ы
(19.01.2010, 17:38:3
213.79.108.215
, 276 байт)
Не работает
-
1111111
(19.01.2010, 17:57:15
95.133.239.143
,
пустое
)
где не работает? в VC6 все ok
-
ы
(19.01.2010, 17:58:22
213.79.108.215
,
пустое
)
IAR AVR. В студии часто и самые странные конструкции работают:)
-
1111111
(19.01.2010, 18:03:36
95.133.239.143
,
пустое
)
ничего в ней странного, у AVR разрядность другая, попробуй тогда p объявить как u8_t и в принтфе побольше их написать (возможно я таки чтото попутал с индейцами)
-
ы
(19.01.2010, 18:06:3
213.79.108.215
,
пустое
)
либо "отзеркалить" - не знаю как в IAR переменные в стек кладуться...
-
ы
(19.01.2010, 18:08:47
213.79.108.215
,
пустое
)
Еще раз говорю - изучи что берется в функции за "...". То что неправильная конструкция работает в студии это всего лишь удачное расположение чисел в памяти. Работать правильно будет только при ручном разборе - например как дасм показал
-
1111111
(19.01.2010, 18:22:14
95.133.239.143
,
пустое
)
на, изучай :))
-
ы
(19.01.2010, 18:25:10
213.79.108.215
, 251 байт)
Верить иару меньше чем студии оснований не вижу - очевидно он просто делает это по другому не выходя за рамки стандарта. Разбор на переменные сейчас - отсутствие гимора с другими компиляторами в будущем
-
1111111
(19.01.2010, 18:55:42
95.133.239.143
,
пустое
)
ну скажи тогда, последоваительность 5,6,7 иар в стек как засунет ? как 05,06,07 или 0500, 0600, 0700 ?
-
ы
(19.01.2010, 18:57:43
213.79.108.215
,
пустое
)
тут дело именно в размерности sizeof (int) iar кидает кратно минимально этими порциями, если его подобрать вернее p надо объявить как 'int' и все будет работать:)
-
ы
(19.01.2010, 18:59:27
213.79.108.215
,
пустое
)
не поленись, проверь:) раз код уже набит. Если не получится тогда я не прав
-
ы
(19.01.2010, 19:01:29
213.79.108.215
,
пустое
)
О, вымутил так что заработало
-
1111111
(20.01.2010, 00:29:24
95.133.239.143
, 265 байт)
Да именно так и попадает. Фигня в том..
-
1111111
(20.01.2010, 00:11:5
95.133.239.143
, 335 байт)
ойё...какое удачное расположение? давай "неудачное" - проверю.
-
ы
(19.01.2010, 18:24:15
213.79.108.215
,
пустое
)
сам уже нашел...ну, есть ограничения конечно:)
-
ы
(19.01.2010, 18:30:4
213.79.108.215
,
пустое
)
отменяется, пока не нашел
-
ы
(19.01.2010, 18:34:20
213.79.108.215
, 158 байт)
VC кладет в стек когда "..." кусками по 32 бита. Осталось понять как кладет IAR и подобрать соответствующую на-разрядность указателя p
-
ы
(19.01.2010, 18:39:23
213.79.108.215
,
пустое
)
указатель в iar сколько занимает? 2 байта неверное, вот тогда надо p сделать u16, если не прокатит придется IAR ставить...
-
ы
(19.01.2010, 18:50:27
213.79.108.215
,
пустое
)
что-то типа этого:
-
ы
(19.01.2010, 16:52:45
213.79.108.215
, 594 байт)
уже сам запутался чего тебе надо, в любом случае строку форматирования (и кол-во аргуметов) придется разбирать в вызываемой ф-ции
-
DASM
(19.01.2010, 17:52:39
89.163.14.219
, 320 байт)
то что ты сейчас написал, прогони в отладчике:) во второму вопросу - ессно, пусть конечная функция их и разбирает, а первая просто чего то делает и передает аргументы дальше...
-
ы
(19.01.2010, 17:56:6
213.79.108.215
,
пустое
)
то, что я написал - в отладчике естественно прогонял. Все OK
-
DASM
(19.01.2010, 18:00:55
89.163.14.219
,
пустое
)
а, ну в таком варианте да - я тормознул - думал что ты ошибся с 1 %d:)
-
ы
(19.01.2010, 18:04:17
213.79.108.215
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сколько миллиампер в одном ампере ?:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru