Портирование с 8266 на 32 или что в имени ему еёшном?

Да, я уже понял после первых комментарий про кириллическую «а»
Спасибо. Понять не могу КАК она там могла оказаться одна?

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

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

Хмм. Всегда использовал boolean, да и ТУТ не советуют bool. А что он должен поменять к лучшему по Вашему мнению?

Не обращай внимания. У меня была подобная ситуация - в разных версиях ИДЕ один и тот же код исполнялся с разным временем, при чем сильно разным - порядка 30%. Просил проверить форумчан - у них этот глюк не воспроизводился.

В С++ таки типа boolean нету. Кстати, почитай комменты к статье, там автора разносят на орехи. И статья заминусована ))

2 лайка

К сожалению, автор заблуждается, когда пишет:

«единственно истинный тип, впрямую связанный с типом bool, который определен стандартами языка С++, это именно BOOLEAN. А BOOL это не что иное, как «typedef int BOOL;»»

На самом деле всё в точности наоборот.

Вот Вам таблица ключевых слов языка (стандарт ISO/IEC 14882:2020 стр. 18)


Как видите в стандарте языка есть ключевое слово bool, но нет ключевого слова boolean.

Обычно, в компиляторах boolean поддерживается, но это расширение стандарта. Использовать его можно, но не надо удивляться, если опять начнётся “в ESP работает, а PSE – нет”. Зачем отходить от стандарта на ровном месте, где это никаких вкусняшек не даёт, правда?

Нафик этот буулл.
int8_t куда приятнее :smiley:
В нем есть “Правда”, “Ложь”, “Не знаю” и ещё куча вариантов :smiley:
Ну и как буулл тоже работает ))

Понятно , спасибо за комментарий.
Возможно ТУТ надо тоже добавить что то подобное :slight_smile:

bool flag;

void setup() {
  Serial.begin(115200);
  for (int i = 0; i < 1000; i++) {
    flag = flag + 1;
    Serial.print(i);
    Serial.print(" >- flag = ");
    Serial.println(flag);
  }
}

void loop() {

}
0 >- flag = 1
1 >- flag = 1
2 >- flag = 1
3 >- flag = 1
4 >- flag = 1
5 >- flag = 1
6 >- flag = 1
7 >- flag = 1
8 >- flag = 1
9 >- flag = 1
10 >- flag = 1
11 >- flag = 1
12 >- flag = 1
13 >- flag = 1
14 >- flag = 1
15 >- flag = 1
16 >- flag = 1

Почти все слова знакомы. Вот друга с мутаблей ни разу не встречал.

Угу. И если пользоваться инвертированием(!), то та же петрушка :slightly_smiling_face:

Я и говорю - целый байт (!) на 0 и 1…

Точно на еденицу? Или всё же не ноль? Да и к тому же обработка бита дольше чем байта.

съэкономленные биты это совсем не то, что можно передать по наследству )))

А зачем биты обрабатывать? 0 = “ложь”, 1 = “правда”, 2 = “не уверен”, -2 = “сам д#рак” и т.д. :smiley:

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

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

Между тем, я так и не увидел, чтобы у кого-то, кроме вас, этот код на 8266 компилировался. Пропустил?

1 лайк

да компилируется (ядро 3.0.1), если первые 15 строк под чип поправить

#include <ESP8266WiFi.h>
#include <WiFiClient.h>

#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>


const char* ssid = "................";
const char* password = "................";

ESP8266WebServer server(80);
. Variables and constants in RAM (global, static), used 29560 / 80192 bytes (36%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ DATA     1512     initialized variables
╠══ RODATA   1248     constants       
╚══ BSS      26800    zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 61407 / 65536 bytes (93%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ ICACHE   32768    reserved space for flash instruction cache
╚══ IRAM     28639    code in IRAM    
. Code in flash (default, ICACHE_FLASH_ATTR), used 302392 / 1048576 bytes (28%)
║   SEGMENT  BYTES    DESCRIPTION
╚══ IROM     302392   code in flash  

если в коде ТС попрравить всего одну букву, он тоже будет компилироватся.
Просили же именно этот код.

1 лайк

Вполне возможно. Если у компилятора есть “расширенный алфавит” и это включено, то почему бы и нет. Он тогда жрёт юникод и там хоть все переменные по-русски называй.

1 лайк

Мне прислали эту цитату

да, погорячился. Извините.

Все, из ветки ушел.