Visual Studio и Platformio ошибка компиляции

vanila
Offline
Зарегистрирован: 25.08.2015
#include <Arduino.h>
​
void setup() { }

void loop() {  func (); }

void func (){}


если скомпилировать в таком виде он напишет что

"'func' was not declared in this scope" 

Соответственно если функцию переместить перед вызовом, то все компилится. 

При этом вчера ему было пофик. Подумал может приложение какое установил и оно сломало, удалил вообще всю папку с приложениями, удалил файл с настройками студио, удалил студио и заново установил студио и платформио... и нифика, ему все равно не нравится. 

Кажется хрен с ним, луп в низ переместить несложно, но он теперь требует что бы все функции были по порядку расположены, а это уже форменное безобразие. 

Как это вообще исправить? 

vanila
Offline
Зарегистрирован: 25.08.2015

visual studio code

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Набери в гугале "Прототипы функций С++"

vanila
Offline
Зарегистрирован: 25.08.2015

DetSimen пишет:

Набери в гугале "Прототипы функций С++"

да, об этом этом я не подумал. с прототипом работает.

но вопрос всеравно остается открытым - что за фигня и как исправить 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Никак. Это штатное поведение. 

vanila
Offline
Зарегистрирован: 25.08.2015

DetSimen пишет:

Никак. Это штатное поведение. 

до этого то он компилил и заливал и ему было пофик

и ардуино иде тоже на это не ругается. 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

vanila пишет:

как исправить 

Вызывать функцию после её объявления, а не до.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

vanila пишет:

и ардуино иде тоже на это не ругается. 

Это потому что разработчики Arduino IDE решили сами исправлять косяки за горе-программистами. Но это не правильный подход.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

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

vanila
Offline
Зарегистрирован: 25.08.2015

Jeka_M пишет:

vanila пишет:

как исправить 

Вызывать функцию после её объявления, а не до.

Спасибо кэп, но это неудобно. 

Буквально вчера ненужно было об этом волноваться а значит как то можно все вернуть взад и не парится о расположении 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Ищи галочку в настройках, чото про прототипы. На VS Micro она точно есть

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

vanila пишет:

Спасибо кэп, но это неудобно. 

Это стандарт языка программирования.

vanila пишет:

Буквально вчера ненужно было об этом волноваться а значит как то можно все вернуть взад и не парится о расположении 

Скажите спасибо разработчикам Arduino IDE, что они приучили Вас делать неправильно. Теперь Вам придётся переучиваться и делать как положено, по стандарту языка программирования.

sadman41
Offline
Зарегистрирован: 19.10.2016

vanila пишет:

Спасибо кэп, но это неудобно. 

Буквально вчера ненужно было об этом волноваться а значит как то можно все вернуть взад и не парится о расположении 


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

andriano
andriano аватар
Онлайн
Зарегистрирован: 20.06.2015

vanila пишет:
... удалил вообще всю папку с приложениями, удалил файл с настройками студио, удалил студио и заново установил студио и платформио... и нифика, ему все равно не нравится. 

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

vanila
Offline
Зарегистрирован: 25.08.2015

 

sadman41 пишет:
vanila пишет:

Спасибо кэп, но это неудобно. 

Буквально вчера ненужно было об этом волноваться а значит как то можно все вернуть взад и не парится о расположении 

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

так вопрос именно в том как это сделать?

vanila
Offline
Зарегистрирован: 25.08.2015

DetSimen пишет:

Ищи галочку в настройках, чото про прототипы. На VS Micro она точно есть

чет не нахожу ничего похожего

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

смирись тогда.  пишы праильно.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

vanila пишет:

так вопрос именно в том как это сделать?

Ответ был ещё в сообщении #4 - никак.

vanila
Offline
Зарегистрирован: 25.08.2015

ну да, а буквально вчера фиксик в комп забирался и за меня прототипы дописывал? 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Разработчики других IDE не позволяют себе такого баловства и отхода от стандарта, как разработчики Arduino IDE. Поэтому смирись и пиши правильно - сначала объявление функции, и только потом вызов.

vanila
Offline
Зарегистрирован: 25.08.2015

Jeka_M пишет:

Разработчики других IDE не позволяют себе такого баловства и отхода от стандарта, как разработчики Arduino IDE. Поэтому смирись и пиши правильно - сначала объявление функции, и только потом вызов.

а вчера VS code, просто забылся что-ли? 

на всякий случай еще раз уточню:

буквально вчера VS code позволял себе побаловаться и все компилил. 

сегодня же он вдруг перестал. 

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

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

 

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

andriano
andriano аватар
Онлайн
Зарегистрирован: 20.06.2015

vanila пишет:

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

Изобрести собственный язык программирования, отличающийся от Си, и собственноручно написать для него компилятор.

 

PS. Для тех, кто в танке: то, что Вы хотите, имеет массу самых серьезных минусов, включая невозможность использовать существенные свойства языка Си, и только один очень маленький плюс - Вашу привычку. Другими словами, Вы хотите явно вредного.

vanila
Offline
Зарегистрирован: 25.08.2015

andriano пишет:

vanila пишет:

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

Изобрести собственный язык программирования, отличающийся от Си, и собственноручно написать для него компилятор.

 

PS. Для тех, кто в танке: то, что Вы хотите, имеет массу самых серьезных минусов, включая невозможность использовать существенные свойства языка Си, и только один очень маленький плюс - Вашу привычку. Другими словами, Вы хотите явно вредного.

для тех кто в танке: 

он уже так работал и я ничего специального для этого не делал. 

вредно не вредно, а так было и я хочу вернуть. 

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

У меня это в свойствах проекта

vanila
Offline
Зарегистрирован: 25.08.2015

Все, понял где собака порылась. 

Все файлы на которые он не ругался были .ino 

А сейчас я пытался тот же код скомпилировать из .cpp 

В общем если файл с разрешением ардуино то можешь не парится а если уж с++ то хрен тебе по всему рылу - пиши как положено )) 

vanila
Offline
Зарегистрирован: 25.08.2015

DetSimen пишет:

У меня это в свойствах проекта

а где это? что то я такого не нахожу 

это в VS Code ?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Это в VS Micro

vanila
Offline
Зарегистрирован: 25.08.2015

DetSimen пишет:

Это в VS Micro

Это ведь платный плагин для visual studio?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

На рутрекере есть вылеченный

vanila
Offline
Зарегистрирован: 25.08.2015

Понятно, спасибо! 

что-то студио больно жирный какой-то

придется привыкать к этим дурацким прототипам

b707
Offline
Зарегистрирован: 26.05.2017

vanila пишет:

Понятно, спасибо! 

что-то студио больно жирный какой-то


студию все одно придецца ставить, В-микро не сам по себе, а только с ней

vanila
Offline
Зарегистрирован: 25.08.2015

ну если вмикро не пиратить то и не придется) 

у меня студио код и в ней платформио, оно как то поменьше выходит чем студио, гдето мегабайт 200 против гигабайт 20 ) 

 

 

b707
Offline
Зарегистрирован: 26.05.2017

vanila пишет:

оно как то поменьше выходит чем студио, гдето мегабайт 200 против гигабайт 20 ) 

 

 


у меня студио и в-микро занимают 500 мег

vanila
Offline
Зарегистрирован: 25.08.2015

b707 пишет:
у меня студио и в-микро занимают 500 мег

а есть какое-то преимущество у VS в таком виде перед VS code? 

 

 

b707
Offline
Зарегистрирован: 26.05.2017

vanila пишет:

а есть какое-то преимущество у VS в таком виде перед VS code? 

не знаю, я пользовался Платформио один день и снес... мне не зашло.

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

b707 пишет:

я пользовался Платформио один день и снес... мне не зашло.

Аналагичненька

vanila
Offline
Зарегистрирован: 25.08.2015

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

vanila
Offline
Зарегистрирован: 25.08.2015

 

разве что прототипы эти дурацкие))