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

 
 
> расширение области видимости переменной
dimka76
сообщение May 13 2009, 09:46
Сообщение #1


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Доброго времени суток.

Использую WinAVR-20090313

имеются две переменные с одинаковыми имнами: локальная и глобальная

язык Си позволяет обратиться из функции к глобальной переменной, если в этой функции имеется одноименная переменная следующим образом
Код
int i;

void foo(void)
{
  int i, k, e;

  k = i; // i локальная
  e = ::i; // i глобальная

}



у меня компилятор в этом случае выдает ошибку.
может этот оператор расширения области видимости присутствует только в C++ ? Я пробовал в начало файла добавлять следующее определение
Код
#ifndef __cplusplus
#define __cplusplus
#endif


все равно выдается та же ошибка

как мне быть в этом случае?

можно конечно дать разные имена, но хочется разобраться почему компилятор выдает ошибки, если Си предоставляет возможность использования одноименных локальных и глобальных имен.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dimka76
сообщение May 14 2009, 04:38
Сообщение #2


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Действительно, я смутно представляю (точнее вообще не представляю) как в WinAVR создавать проекты на С++ и смешаные проекты ( Си + С++).
Использую связку WinAVR + AVRStudio, а там makefile создается автоматически. Пробовал менять расширение файла с *.с на *.С.
Компилятор на :: перестал выдавать ошибки, но начал давать предупреждение на -std=gnu99. Пробовал использовать MFile из пакета WinAVR, но для опиции -std там всего четыре альтернативы и на все компилятор выдает предупреждения при использовании файла программы с расширением *.С.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
amw
сообщение May 14 2009, 06:21
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(dimka76 @ May 14 2009, 07:38) *
Пробовал менять расширение файла с *.с на *.С.

Уже говорили - *.cpp


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
dimka76
сообщение May 14 2009, 07:15
Сообщение #4


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(amw @ May 14 2009, 10:21) *
Уже говорили - *.cpp



..\WinAVR-20090313\doc\avr-libc\avr-libc-user-manual\FAQ.html

Цитата
Can I use C++ on the AVR?
Basically yes, C++ is supported (assuming your compiler has been configured and compiled to support it, of course). Source files ending in .cc, .cpp or .C will automatically cause the compiler frontend to invoke the C++ compiler. Alternatively, the C++ compiler could be explicitly called by the name avr-c++........................................


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- dimka76   расширение области видимости переменной   May 13 2009, 09:46
- - MrYuran   Даже если определить локальную переменную, совпада...   May 13 2009, 09:59
|- - dimka76   Цитата(MrYuran @ May 13 2009, 13:59) :: -...   May 13 2009, 10:04
|- - bus16   Цитата(dimka76 @ May 13 2009, 14:04) но я...   May 13 2009, 10:34
|- - Сергей Борщ   Цитата(dimka76 @ May 13 2009, 13:04) но я...   May 13 2009, 11:55
|- - dimka76   Цитата(Сергей Борщ @ May 13 2009, 15:55) ...   May 13 2009, 12:21
|- - HARMHARM   Цитата(dimka76 @ May 13 2009, 15:21) ... ...   May 13 2009, 13:45
|- - Сергей Борщ   Цитата(dimka76 @ May 13 2009, 15:21) если...   May 13 2009, 17:29
|- - sergeeff   Никак не возьму в толк. Какая разница? 1. В ...   May 13 2009, 18:30
- - SysRq   Кодint i; int get_i(void) { return i; }...   May 13 2009, 12:24
|- - dimka76   Цитата(SysRq @ May 13 2009, 16:24) Кодint...   May 13 2009, 12:26
|- - SysRq   Цитата(dimka76 @ May 13 2009, 16:26) тогд...   May 13 2009, 12:30
|- - Непомнящий Евгений   Цитата(dimka76 @ May 14 2009, 08:38) Проб...   May 14 2009, 08:11
||- - dimka76   Цитата(Непомнящий Евгений @ May 14 2009, 12...   May 14 2009, 08:18
|- - Сергей Борщ   Цитата(dimka76 @ May 14 2009, 07:38) Дейс...   May 14 2009, 18:33
|- - dimka76   Цитата(Сергей Борщ @ May 14 2009, 22:33) ...   May 15 2009, 05:08
|- - Сергей Борщ   Цитата(dimka76 @ May 15 2009, 08:08) Что ...   May 15 2009, 07:10
|- - dimka76   Цитата(Сергей Борщ @ May 15 2009, 11:10) ...   May 15 2009, 08:04
- - Непомнящий Евгений   А расширение .cpp не помогает?   May 14 2009, 06:19
- - Непомнящий Евгений   Очевидно - убрать опцию --std=gnu99 для .C файлов ...   May 14 2009, 09:29
- - mdmitry   Забросить студию и собрать проект руками, написав ...   May 14 2009, 13:02
- - sergeeff   Вся эта возня с переменными, она для реальной рабо...   May 14 2009, 19:08


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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 05:18
Рейтинг@Mail.ru


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