Я работаю над программой на C и использую компилятор SDCC для устройства с архитектурой 8051.
Я пытаюсь написать функцию GetName, которая будет читать 8 символов из флэш-памяти и возвращать массив символов в некоторой форме. Я знаю, что невозможно вернуть массив в C, поэтому я пытаюсь сделать это, используя такую структуру:
//********************FLASH.h file*******************************
MyStruct GetName(int i); //Function prototype
#define NAME_SIZE 8
typedef struct
{
char Name[NAME_SIZE];
} MyStruct;
extern MyStruct GetName(int i);
// *****************FLASH.c file***********************************
#include "FLASH.h"
MyStruct GetName( int i)
{
MyStruct newNameStruct;
//...
// Fill the array by reading data from Flash
//...
return newNameStruct;
}
У меня пока нет ссылок на эту функцию, но по какой-то причине я получаю ошибку компилятора, которая говорит: «Функция не может вернуть агрегат». Значит ли это, что мой компилятор не поддерживает функции, которые возвращают структуры? Или я что-то не так делаю?