Для меня пакеты были там по правильному пути, но папки сборки внутри папки пакета не были. Я просто удалил все пакеты, которые, по его словам, отсутствовали, и перестроил решение, и он успешно создал папки сборки и файлы .props. Таким образом, сообщения об ошибках были правильными, сообщив мне, что что-то было пропущено.
Если Вы будете знать размер во время компиляции, это сделает это:
//function prototype
void do_something(int (&array)[board_width][board_height]);
Выполнение это с
void do_something(int array[board_width][board_height]);
на самом деле передаст указатель на первый подмассив двумерной матрицы ("board_width", полностью проигнорирован, как с вырожденным случаем наличия только одного размера, когда Вы имеете int array[]
принятие указателя), который является, вероятно, не, что Вы хотите (потому что Вы явно попросили ссылку). Таким образом выполнение его со ссылкой, использование sizeof на параметре sizeof array
уступят sizeof(int[board_width][board_height])
(как будто Вы сделали бы это на самом аргументе), в то время как выполнение его со вторым методом (объявление параметра как массив, таким образом заставляя компилятор преобразовать его к указателю) уступит sizeof(int(*)[board_height])
, таким образом просто sizeof указателя.
Хотя можно передать ссылку на массив, потому что массивы затухают к указателям в вызовах функции, когда они не связываются с параметры ссылки, и можно использовать указатели точно так же, как массивы, более распространено использовать массивы в вызовах функции как это:
void ModifyArray( int arr[][80] );
или эквивалентно
void ModifyArray( int (*arr)[80] );
Внутренняя часть функция, прибытие может использоваться почти таким же способом, как будто объявление функции было:
void ModifyArray( int (&arr)[80][80] );
единственный случай, где это не содержит, - когда для вызванной функции нужна статически проверенная гарантия размера первого индекса массива.
Вы могли бы хотеть попробовать cdecl или C++ decl .
% c++decl
c++decl> declare i as reference to array 8 of array 12 of int
int (&i)[8][12]
c++decl> explain int (&i)[8][12]
declare i as reference to array 8 of array 12 of int
c++decl> exit
Я думаю, что это - то, что Вы хотите:
void do_something(int array[board_width][board_height]);
Вы не можете передать массив ссылок на функцию.