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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> расширение области видимости переменной
dimka76
сообщение May 14 2009, 07:15
Сообщение #16


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
Непомнящий Евген...
сообщение May 14 2009, 08:11
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(dimka76 @ May 14 2009, 08:38) *
Пробовал менять расширение файла с *.с на *.С.
Компилятор на :: перестал выдавать ошибки, но начал давать предупреждение на -std=gnu99.


Дык а что вас изумляет? gnu99 - это, наскока я понимаю, стандарт С99. А вы компилите C++...
Go to the top of the page
 
+Quote Post
dimka76
сообщение May 14 2009, 08:18
Сообщение #18


developer
****

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



Цитата(Непомнящий Евгений @ May 14 2009, 12:11) *
Дык а что вас изумляет? gnu99 - это, наскока я понимаю, стандарт С99. А вы компилите C++...


да вобще ничего не изумляет. Вопрос в том, как избавиться от предепреждения?


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение May 14 2009, 09:29
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Очевидно - убрать опцию --std=gnu99 для .C файлов smile.gif

Вот как ее убрать - хз, я из авр-студии не компилил...
Go to the top of the page
 
+Quote Post
mdmitry
сообщение May 14 2009, 13:02
Сообщение #20


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Забросить студию и собрать проект руками, написав или поправив makefile для Winavr. Есть в комплекте утилита для помощи в написании makefile. Есть документация на русском языке по make. Вообще-то, уже работа с make обсуждалась неоднократно.
В список компилируемых файлов внесите их с правильными расширениями
Код
# List C source files here. (C dependencies are automatically generated.)
SRC =

# List C++ source files here. (C dependencies are automatically generated.)
CPPSRC =

и поправьте опции компилятора для расширения сообщений о компиляции. Можете узнать много нового rolleyes.gif


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 14 2009, 18:33
Сообщение #21


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(dimka76 @ May 14 2009, 07:38) *
Действительно, я смутно представляю (точнее вообще не представляю) как в WinAVR создавать проекты на С++ и смешаные проекты ( Си + С++).
Но хоть что такое С++ и как оно стыкуется с С вы знаете? Про name mangling и вытекающий из него extern "C" для сишных функций слышали? Иначе лучше вам действительно переименовать локальную переменную.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sergeeff
сообщение May 14 2009, 19:08
Сообщение #22


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Вся эта возня с переменными, она для реальной работы или для учебы? По-моему поменять имена у глобальных переменных - дел на 10 минут, а нам задают вопросы третий день.
Go to the top of the page
 
+Quote Post
dimka76
сообщение May 15 2009, 05:08
Сообщение #23


developer
****

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



Цитата(Сергей Борщ @ May 14 2009, 22:33) *
Но хоть что такое С++ и как оно стыкуется с С вы знаете? Про name mangling и вытекающий из него extern "C" для сишных функций слышали? Иначе лучше вам действительно переименовать локальную переменную.


Что такое С++ я знаю. Про extern "C" для сишных функций я слышал, но речь идет не о фйнкции. А если вы это к #define __cplusplus, то я думал, что так WinAVR распознает, что прога написана на С++.



Цитата(sergeeff @ May 14 2009, 23:08) *
Вся эта возня с переменными, она для реальной работы или для учебы? По-моему поменять имена у глобальных переменных - дел на 10 минут, а нам задают вопросы третий день.



Для саморазвития с последующим применением в работе. Для поиска истины, если хотите. Просто человек я въедливый иногда бываю. Хочется разобраться.

Цитата
а нам задают вопросы третий день.


Но ведь никто никого не принуждает отвечать rolleyes.gif


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 15 2009, 07:10
Сообщение #24


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(dimka76 @ May 15 2009, 08:08) *
Что такое С++ я знаю.
Я тоже знаю, что такое кардиология. Но это не значит, что могу проводить операции на сердце или даже оказать первую помощь, если (тьфу-тьфу) кому-то станет плохо. По вашим вопросам понятно, что знания у вас если и есть, то поверхостные. Не обижайтесь.
Цитата(dimka76 @ May 15 2009, 08:08) *
Про extern "C" для сишных функций я слышал, но речь идет не о функции. А если вы это к #define __cplusplus,

Нет, это я к тому, что если вы переведете один из файлов проекта на плюсы - то сразу же получите ругань линкера, что из вашего плюсового файла не видны функции из сишных. А из вопроса про #define __cplusplus понятно, что никаких специальных действий для решения этого у вас не предусмотрено и сразу, с наскоку, решить это у вас не получится.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
dimka76
сообщение May 15 2009, 08:04
Сообщение #25


developer
****

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



Цитата(Сергей Борщ @ May 15 2009, 11:10) *
Не обижайтесь.


Я и не обижаюсь. Про С++ я только читал. На практике не применял.

Цитата
Нет, это я к тому, что если вы переведете один из файлов проекта на плюсы - то сразу же получите ругань линкера, что из вашего плюсового файла не видны функции из сишных.


Как я уже выше говорил, я этот файл переводил в плюсы (давал ему расширение .С). Линкер не ругался. Потому, что этот файл не обращается к сишным (без плюсов) функциям. Наоборот, фунции из .с файлов, обращаются к функциям этого файла( которому я давал расширение .С). Но, опять таки, как я уже говорил выше, компилятор выдавал предупреждение на -std=gnu99.


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

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

 


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


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