реклама на сайте
подробности

 
 
> Передача параметров в функцию., AVR-GCC/ATMega2560
Tuma
сообщение Aug 12 2011, 12:40
Сообщение #1





Группа: Новичок
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Aug 22 2011, 08:29
Сообщение #2


Гуру
******

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



QUOTE (777777 @ Aug 22 2011, 07:25) *
Вообще-то никакие компиляторы давно не выдают предупреждений в подобных случаях.

К счастью, не все комппиляторописатели сдаются перед малограмотной толпой sm.gif.
Вот, например, IAR:
QUOTE
D:WORK_ARMXADDMAINmain.c(440) : Remark[Pe236]: controlling expression is constant

Отключаемо, как и любые warnings/remarks но таки есть.



QUOTE (ARV @ Aug 22 2011, 08:23) *
while(1) - по крайней мере последний здравому смыслу не противоречит.

Совершенно дикий у Вас "здравый смысл" - написать зачем-то бессмысленное выражение "пока белый цвет белого цвета", после чего ожидать, что компилятором оно будет похерено и получится то, что естественно пишется как for( ; ; ) - выполнять нечто без контроля каких-либо условий.

QUOTE (ARV @ Aug 22 2011, 08:23) *
в то же время в for второй операнд может быть пустым местом, причем, что самое странное, это пустое место воспринимается как истинное логическое выражение.

Воспринимается, как отсутствие каких либо условий для продолжения выполнения цикла. Отсутствие запретов и контроля трактуется, как разрешение. Отсутствие таблички на скамейке в парке об ограничении является естественным указанием на то, что сидеть можно. Табличка на зеленой скамейке - сидеть можно пока скамейка зеленая, просто идиотская.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ARV
сообщение Aug 22 2011, 12:42
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(zltigo @ Aug 22 2011, 11:29) *
Воспринимается, как отсутствие каких либо условий для продолжения выполнения цикла.
вот вы сами себя и подловили sm.gif : логика - штука железная. итак, провожу разбор вашего же утверждения: отсутствие условий для продолжения означает буквально не надо ничего делать, т.е. цикл должен бы быть не бесконечным, а пустым. ведь в цикле for второй операнд - именно условие ПРОДОЛЖЕНИЯ, а не прекращения цикла. было бы там условие прекращения - тогда ваше утверждение не вступало бы в противоречие со здравым смыслом: нет условий для завершения цикла - значит, цикл вечный.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 22 2011, 12:53
Сообщение #4


Гуру
******

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



QUOTE (ARV @ Aug 22 2011, 15:42) *
разбор вашего же утверждения: отсутствие условий для продолжения означает буквально не надо ничего делать

Отсутствие условий для продолжения означает, что цикл выполняется БЕЗ всяких условий - безусловно.
http://www.classes.ru/all-russian/russian-...v-term-2249.htm
Я русский язык, поскольку учился с 6 класса в русской школе, причем очень хорошей русской школе "за бугром", знаю достаточно прилично.
Точно так-же я знаю 'C' и не надо пытаться убеждать меня начинать писать на нем безграмотно. Все.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
- - _Pasha   Цитата(zltigo @ Aug 20 2011, 15:10) Для о...   Aug 20 2011, 13:27
|- - zltigo   QUOTE (_Pasha @ Aug 20 2011, 15:27) Повто...   Aug 20 2011, 13:37
|- - Юрий_СВ   Цитата(zltigo @ Aug 20 2011, 16:37) Что к...   Aug 20 2011, 13:53
|- - zltigo   QUOTE (Юрий_СВ @ Aug 20 2011, 15:53) Види...   Aug 20 2011, 14:02
|- - ARV   Цитата(zltigo @ Aug 20 2011, 17:02) Да ....   Aug 20 2011, 17:44
||- - 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
|- - 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, 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01476 секунд с 7
ELECTRONIX ©2004-2016