|
Передача параметров в функцию., AVR-GCC/ATMega2560 |
|
|
|
Aug 12 2011, 12:40
|
Группа: Новичок
Сообщений: 6
Регистрация: 12-08-11
Пользователь №: 66 695

|
Добрый день, коллеги! Возможно я что-то недопонимаю или не знаю в C, посему возник такой вопрос: Код #include <stdio.h> void SendString (const char _String[]) { unsigned int i = 0; while (_String[i] != '\0') { printf ("%c\n", _String[i]); i++; } }
int main (void) { SendString ("LaLa"); return 0; } Прекрасно работает на i386. Но ни одна из Код void SendString (const char _String[]) { unsigned int i = 0; while (_String[i] != '\0') { SendChar (_String[i]); i++; } return; }
void SendString2 (const char *_String) { while (*_String) { SendChar (*_String++); } } ... SendString ("1234567890"); SendString2 ("1234567890"); ... функций не работает - в функцию SendChar передаётся мусор. Самостоятельный вызов SendChar ('a'); работает прекрасно. Как нужно правильно передавать параметры на ATMega/AVR-GCC.
Сообщение отредактировал Tuma - Aug 12 2011, 12:43
|
|
|
|
|
 |
Ответов
|
Aug 20 2011, 13:37
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (_Pasha @ Aug 20 2011, 15:27)  Повторяю еще раз. Незачем  . Я и первый раз ответ понял. QUOTE (aesok @ Aug 20 2011, 15:12)  Когда я пишу макрос то.... В данном случае это НЕ макрос, а отвечать почему-то Вы начали мне, а не Автору. Что касается обертки всего чего попало макросообразного во while(0), то в ответ на такое вменяемый компилятор встретив бессмысленное выражение будет генерить warning. Посему злоупотреблять, а то употреблять по причине решения притянутой за уши "проблемы", совершенно не следует. Совершенно достаточно заключать многострочные макросы в фигурные скобки. В этом случае либо он будет работать, как положено, либо получите (если вдруг забыли  , что это FUNCTION() у Вас макрос ) сообщение об ошибке и напишите просто и без затей c фигурными скобками: if( ... ) { FUNCTION(); } else ...... вместо if( ... ) FUNCTION(); else ......
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 20 2011, 13:53
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 4-05-08
Пользователь №: 37 272

|
Цитата(zltigo @ Aug 20 2011, 16:37)  Что касается обертки всего чего попало макросообразного во while(0), то в ответ на такое вменяемый компилятор встретив бессмысленное выражение будет генерить warning. Видимо GCC невменяемый компилятор... Цитата do { unsigned char i; i=PORTC.IN; 3dc: 80 91 48 06 lds r24, 0x0648 i+=17; 3e0: 8f 5e subi r24, 0xEF ; 239 PORTC.OUT=i; 3e2: e0 e4 ldi r30, 0x40 ; 64 3e4: f6 e0 ldi r31, 0x06 ; 6 3e6: 84 83 std Z+4, r24 ; 0x04 } while(0); Цитата PORTC.OUT=PORTC.IN+17; 3dc: 80 91 48 06 lds r24, 0x0648 3e0: 8f 5e subi r24, 0xEF ; 239 3e2: e0 e4 ldi r30, 0x40 ; 64 3e4: f6 e0 ldi r31, 0x06 ; 6 3e6: 84 83 std Z+4, r24 ; 0x04
|
|
|
|
Сообщений в этой теме
Tuma Передача параметров в функцию. Aug 12 2011, 12:40 Mareng Кодvoid SendString (char String[]... Aug 12 2011, 12:51 Tuma Mareng, увы, не помогло.
Упорно присылает только п... Aug 12 2011, 12:58 Mareng Цитата(Tuma @ Aug 12 2011, 19:40) Самосто... Aug 12 2011, 13:03 zltigo Ответьте себе на два вопроса:
- Какая архитектура ... Aug 12 2011, 13:17 Tuma ЦитатаА если подряд 5-10 раз вызвать SendChar() с ... Aug 12 2011, 13:21 Genadi Zawidowski Исходники функци передачи символа покажите.
0) не ... Aug 12 2011, 15:17 zltigo QUOTE (Genadi Zawidowski @ Aug 12 2011, 18... Aug 12 2011, 16:07  AHTOXA Цитата(zltigo @ Aug 12 2011, 22:07) Однак... Aug 12 2011, 16:56   zltigo QUOTE (AHTOXA @ Aug 12 2011, 19:56) Нет, ... Aug 12 2011, 17:32    _Pasha Цитата(zltigo @ Aug 12 2011, 20:32) Фу, к... Aug 12 2011, 19:56     zltigo QUOTE (_Pasha @ Aug 12 2011, 22:56) К сож... Aug 12 2011, 20:47 Tuma Цитатане очень хорошая идея свои переменные (имена... Aug 15 2011, 12:32 sergeeff Цитата(Tuma @ Aug 15 2011, 15:32) Меня ещ... Aug 15 2011, 13:17 zltigo QUOTE (Tuma @ Aug 15 2011, 14:32) Меня ещ... Aug 16 2011, 11:38 Genadi Zawidowski Цитата(Tuma @ Aug 15 2011, 16:32) Я как-т... Aug 20 2011, 15:25  zltigo QUOTE (Genadi Zawidowski @ Aug 20 2011, 17... Aug 20 2011, 15:41 Tuma ЦитатаОбычно с подчеркивания начинаются служебные ... Aug 16 2011, 11:32 Tuma Однако с гарвардской архитектурой у меня пока не о... Aug 16 2011, 13:22 _Pasha Кодextern void send_char(char what);
#defi... Aug 16 2011, 14:50  zltigo QUOTE (_Pasha @ Aug 16 2011, 16:50) Я бы ... Aug 16 2011, 16:06   Юрий_СВ Цитата(zltigo @ Aug 16 2011, 19:06) Помол... Aug 16 2011, 18:11    Zlumd Цитата(Юрий_СВ @ Aug 17 2011, 01:11) Норм... Aug 17 2011, 02:49    777777 Цитата(Юрий_СВ @ Aug 16 2011, 22:11) Норм... Aug 17 2011, 09:50   aesok Цитата(zltigo @ Aug 16 2011, 20:06) Помол... Aug 20 2011, 12:02    zltigo QUOTE (aesok @ Aug 20 2011, 14:02) ответ ... Aug 20 2011, 12:10     aesok Цитата(zltigo @ Aug 20 2011, 16:10) Для о... Aug 20 2011, 13:12 sergeeff Наверное к тому же, как возврат из функции send_bl... Aug 16 2011, 16:11 AHTOXA Цитата(sergeeff @ Aug 16 2011, 22:11) Нав... Aug 17 2011, 03:11 _Pasha Цитата(zltigo @ Aug 16 2011, 19:06) зачем... Aug 16 2011, 18:18 sergeeff Интересная позиция. Городить do {} while(0) для об... Aug 16 2011, 19:33     zltigo QUOTE (ARV @ Aug 20 2011, 19:44) что-то я... Aug 20 2011, 18:28      ARV Цитата(zltigo @ Aug 20 2011, 21:28) что-т... Aug 21 2011, 08:28       zltigo QUOTE (ARV @ Aug 21 2011, 10:28) существу... Aug 21 2011, 10:21    777777 Цитата(zltigo @ Aug 20 2011, 18:02) Анало... Aug 21 2011, 12:19 _Pasha Забыл привести одну конструкцию, используемую в Pr... Aug 21 2011, 09:02 ARV Цитата(_Pasha @ Aug 21 2011, 12:02) Кто н... Aug 21 2011, 09:44  _Pasha Цитата(ARV @ Aug 21 2011, 12:44) и чего т... Aug 21 2011, 09:47 ReAl Цитата(_Pasha @ Aug 21 2011, 12:02) И так... Aug 21 2011, 11:56 ReAl Кодfor(;;) {
// endless loop
}Совсем-со... Aug 21 2011, 17:04 sergeeff Цитата(ReAl @ Aug 21 2011, 20:04) Кодfor... Aug 21 2011, 20:31  zltigo QUOTE (sergeeff @ Aug 21 2011, 23:31) Ну ... Aug 21 2011, 23:03   777777 Цитата(zltigo @ Aug 22 2011, 03:03) Я уже... Aug 22 2011, 04:25   ARV Цитата(zltigo @ Aug 22 2011, 02:03) Я уже... Aug 22 2011, 05:23    777777 Цитата(ARV @ Aug 22 2011, 09:23) лично мн... Aug 22 2011, 05:59 zltigo QUOTE (777777 @ Aug 22 2011, 07:25) Вообщ... Aug 22 2011, 08:29 sergeeff Цитата(zltigo @ Aug 22 2011, 11:18) К сча... Aug 22 2011, 08:35  zltigo QUOTE (sergeeff @ Aug 22 2011, 11:35) Как... Aug 22 2011, 08:43 777777 Цитата(zltigo @ Aug 22 2011, 12:29) Совер... Aug 22 2011, 09:15  zltigo QUOTE (777777 @ Aug 22 2011, 12:15) Что ж... Aug 22 2011, 09:32 ARV Цитата(zltigo @ Aug 22 2011, 11:29) Воспр... Aug 22 2011, 12:42  zltigo QUOTE (ARV @ Aug 22 2011, 15:42) разбор в... Aug 22 2011, 12:53   ARV Цитата(zltigo @ Aug 22 2011, 15:53) Отсут... Aug 22 2011, 13:32    zltigo QUOTE (ARV @ Aug 22 2011, 16:32) то почем... Aug 22 2011, 14:26     ARV Цитата(zltigo @ Aug 22 2011, 17:26) Напри... Aug 22 2011, 14:34 sergeeff Меня критикуют за цитаты из книг. Тем не менее. Ге... Aug 22 2011, 10:04 zltigo QUOTE (sergeeff @ Aug 22 2011, 13:04) явл... Aug 22 2011, 10:17 zltigo QUOTE но for(;;)
Это значит, что наличие акваланга... Aug 22 2011, 14:42 Petka Цитата(zltigo @ Aug 22 2011, 18:42) Это з... Aug 22 2011, 14:55  zltigo QUOTE (Petka @ Aug 22 2011, 17:55) У меня... Aug 22 2011, 15:02   ARV Цитата(zltigo @ Aug 22 2011, 19:02) Там ц... Aug 22 2011, 16:38   Petka Цитата(zltigo @ Aug 22 2011, 19:02) Почит... Aug 22 2011, 17:16 sergeeff Думается мне, что все, как часто это бывает в жизн... Aug 22 2011, 18:53 _Pasha Главная-таки проблема: если в стандарт закралась г... Aug 23 2011, 06:00
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|