Есть ли способ определить массив по аргументу вызова функции? - PullRequest
0 голосов
/ 02 марта 2020

У меня есть функция, которая ожидает переменную и указатель.

void sendCMD(byte cmd, byte data[]){
    ...
}

Можно ли в любом случае вызывать эту функцию с данными следующим образом:

sendCMD(0xff, { 0x0a, 0x02 });

Так как даже в Google я ничего не нашел ... может быть, я не нашел выглядел достаточно усердно, но я также не совсем уверен, какие условия я должен искать. Любая помощь приветствуется! Обратите внимание, что byte - это то же самое, что и char!

Ответы [ 2 ]

6 голосов
/ 02 марта 2020

Вы можете использовать литерал составного массива :

sendCMD(0xff, (byte[]){ 0x0a, 0x02 });
0 голосов
/ 02 марта 2020

По 2d массиву я запутался. Вам просто нужен составной литерал:

sendCMD(0xff, (byte[]){...});

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

...