Как подделать функцию C, которая принимает двумерный массив в качестве входных данных с Fake Function Framework (FFF)? - PullRequest
0 голосов
/ 25 сентября 2019

У меня проблемы с выяснением, как правильно настроить макрос в FFF для подделки функции, которая принимает массив строк.Попытка передать массив 2D кажется незаконной, поэтому я создал typedef, чтобы попытаться обойти это.

/*Macro for faking the function*/
#define getFilesInDir fake_getFilesInDir
FAKE_VOID_FUNC7(fake_getFilesInDir, char*, FileNames, uint16_t, char*, char*, 
int32_t*, uint8_t)

#define MAX_FILENAME_SIZE           400
typedef char FileNames[][MAX_FILENAME_SIZE];

/*Declaration in another header file*/
void getFilesInDir(char* dir, FileNames filesInDir, uint16_t maxNumFiles, char* includeString,
               char* excludeString, int32_t* fileCnt, uint8_t recursive);


/*Code under test*/
char fileNames[CFU_MAX_NUM_FILES][MAX_FILENAME_SIZE]; //Local variable
//...
getFilesInDir(path, fileNames, CFU_MAX_NUM_FILES, (char*)cfgExt, NULL, &fileCount, false);

Этот код дает мне 2 ошибки. arg1_history: отсутствует индекс и struct fake_getFilesInDir_Fake имеет недопустимый массив нулевого размера

Есть идеи, что я делаю неправильно?

1 Ответ

1 голос
/ 25 сентября 2019

Я понял это.Правильный typedef для 2D-массива:

typedef char (*FileNames)[MAX_FILENAME_SIZE];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...