Отговори на тема  [ 5 мнения ] 
AVR GCC помогнете за един указател :) 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение AVR GCC помогнете за един указател :)
Има следните дефиниции (първата е в fat.h, втората - в fat.c:
Код:
struct fat_dir_entry_struct{
    char long_name[32];
//   ...  разни други работи :)
    uint32_t file_size;
};
struct fat_file_struct{
    struct fat_fs_struct* fs;
    struct fat_dir_entry_struct dir_entry;
    offset_t pos;
    cluster_t pos_cluster;
};

има и една функция, която си работи ОК:
Код:
struct fat_file_struct * xFileInDir = open_file_in_dir(xFAT, xDir, command);
т.е. връща валиден използваем xFileInDir

Обаче аз не знам как да стигна до
xFileInDir -> dir_entry -> file_size
на върнатия резултат.

Изчетох де що намерих :) - не мога да свикна с това C, май :), и много се надявам на помощта ви :)

ПП
Както и да напиша синтаксиса - при компилиране все се оплаква:
request for member 'dir_entry' in something not a structure or union ....


Съб Мар 12, 2011 8:03 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
xFileInDir->dir_entry.file_size


Съб Мар 12, 2011 9:26 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
Nikola Kirov написа:
xFileInDir->dir_entry.file_size

Преди да постна пробвах формално всички комбинации с разделителите "->" и "." :)
Тук
if (xFileInDir | ->dir_entry.file_size>0){
дава грешка
dereferencing pointer to incomplete type

ПП
и да допълня целия фрагмент:
Код:
                struct fat_file_struct * xFileInDir = open_file_in_dir(xFAT, xDir, command);
                if(!xFileInDir) {
                    uart_puts_p(PSTR("error opening "));
                    uart_puts(command);
                    uart_putc('\n');
                    continue;
                }

            if (xFileInDir->dir_entry.file_size>0){
            }            


Последна промяна NikB на Нед Мар 13, 2011 12:20 pm, променена общо 1 път



Нед Мар 13, 2011 11:56 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
би трябвало да работи и така както са декларирани нещата. Нещо пак е омазано при теб вероятно.

Може просто правилно да си декларираш структурите като типове. Когато използваш някаква структура или union за тип винаги си я дефинираш с typedef.

Код:
typedef struct {
    char long_name[32];
//   ...  разни други работи :)
    uint32_t file_size;
}fat_dir_entry_struct;

typedef  struct {
    struct fat_fs_struct* fs;
    struct fat_dir_entry_struct dir_entry;
    offset_t pos;
    cluster_t pos_cluster;
}fat_file_struct;


Нед Мар 13, 2011 12:14 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
Благодаря!


Нед Мар 13, 2011 12:20 pm
Профил ICQ WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 5 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни