Как работает моторная функция в Robot C

Моя команда пишет код для RobotC, языка с C-подобным синтаксисом. Он в основном используется в качестве вводного для программирования в робототехнике. У него есть базовый материал C: операторы if, for и while, функции и даже структуры, массивы и указатели, но они используются не часто. Основное отличие состоит в том, что он работает с многопоточностью, не является бесплатным, и вы можете компилировать только один файл за раз.

Мы хотели сделать моторный ход. Для этого вы обычно пишете.

 motor[motorA] = 50;

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

Мой товарищ по команде случайно (или, возможно, нарочно) написал это вместо

 motor(motorA) = 50;

Я собирался его поправить, когда на удивление все скомпилировалось и заработало нормально!

Я знаю Java и немного нормальный C, и это просто не имеет смысла для меня. Вы не можете установить значение возврата функции... не так ли?

Может кто-нибудь объяснить, почему это работает?

1 ответ

Решение

Если вы заглянете в RobotCIntrinsics.c (когда у вас открыт файл кода, просто щелкните правой кнопкой мыши одну из команд motor[] и выберите "Перейти к определению / объявлению" в контекстном меню, чтобы увидеть его), вы обнаружите, что команда двигателя определяется как "свойство". Теперь я не могу сказать, что именно это означает, но по моему опыту это означает, что вы можете использовать либо [], либо () для доступа к значениям в нем. Это не массив, и это не вызов функции. Это нечто совершенно другое, что, очевидно, позволяет использовать оба синтаксиса.

Другие вопросы по тегам