Также использую внешний редактор (FAR-editor+colorer)в основном из-за того что ArduinoIDE игнорирует сочетания клавиш "Ctrl+Ins" "Shift+Ins", а переучиваться некогда.
Сначала думал, что это я написал, т.к. именно связка Far+Colorer+ESC+UnicodeWizard используется мною при программировании на C/C++/PHP/JavaScript/Python/Perl и все остальное. И именно отсутствие Ctrl-Ins/Shift-Ins меня всегда напрягало в этой Arduinio "IDE".
удалось заставить работать один из файлов проекта лишь после тотальной зачистки всех русских комментариев. Возможно это издержки перекодировок Win-Dos-UTF8.
Посмотреть бы на этот исходник.
...а Far я так понимаю старый неюникодный? Я вот пока на 1.71 сижу, руки не доходят переползти на 2.0.
многие навороты из актуальной документации по С и С++ для нашего Си невозможны: структуры struct Point {double x; double y;}; конструкторы int[] d= new int[5];
Ничего себе! Похоже там действительно каким-то образом new/delete отрезали! Я еще поковыряю этот вопрос, но похоже, это уже неполноценный C++ получается. Жить конечно можно, выделяя через malloc.
...struct работает вроде:
struct Point { double x; double y; };
void setup() {
Serial.begin(9600);
struct Point a;
a.x = 1.0; a.y = 2.0;
Serial.println(a.x); Serial.println(a.y);
int *d = (int*)malloc(sizeof(int)*2);
d[0] = 3; d[1] = 4;
Serial.println(d[0]); Serial.println(d[1]);
free(d);
}
void loop() {
}
это массив, элементы которого сами являются массивами.
Тут смотря что мы хотим получить в конечном итоге, либо просто многомерный массив, но тогда мы должны знать его размер на этапе компиляции, либо, если если размеры заранее неизвестны, придется самостоятельно его создавать, по частям.
Но это и в "настольном" C/C++ точно так же, если только не обернуть всю эту кухню в какие-то мудрые классы.
Пример на оба варианта:
void setup() {
Serial.begin(9600);
//многомерный массив 2 строки, 3 столбца. Создатся на стеке, память освободится
//после выхода из ф-ии
int b[2][3] = { {1, 2, 3}, {4, 5, 6}};
Serial.println(b[0][0]); Serial.println(b[0][1]); Serial.println(b[0][2]);
Serial.println(b[1][0]); Serial.println(b[1][1]); Serial.println(b[1][2]);
//динамический
//Создаем руками - сначала массив из 2-х указателей на int
int **c = (int**)malloc(sizeof(int*)*2);
//Потом 2 кусочка по 3 int'а
for (int i=0; i<2; i++) {
c[i] = (int*)malloc(sizeof(int)*3);
}
//обращаемся к нему
c[0][0] = 1; c[0][1] = 2; c[0][2] = 3;
c[1][0] = 4; c[1][1] = 5; c[1][2] = 6;
Serial.println(c[0][0]); Serial.println(c[0][1]); Serial.println(c[0][2]);
Serial.println(c[1][0]); Serial.println(c[1][1]); Serial.println(c[1][2]);
//не забываем освободить память:
for (int i=1; i>=0; i--) {
free(c[i]);
}
free(c);
}
void loop() {
}