ожидаемые спецификаторы объявлений или «…» перед «логическим»

0

следующим является мой.h файл

4 typedef struct pic_ pic_t; 
5 typedef int32_t status_t; 
6 typedef u_int16_t pic_id_t; 
7 typedef const char* (*pic_flavor_t) (pic_t *); 
8 typedef status_t (*pic_periodic_t) (pic_t *); 
9 typedef status_t (*pic_get_port_info_t) (pic_t *pic, u_int16_t link, void*info, Boolean*need_update); 
11 struct pic_ 
12 { 
13 u_int16_t   nic_slot; 
14 u_int16_t   pic_slot; 
15 u_int32_t   pic_flags; 
16 pic_id_t    pic_id; 
17 u_int16_t   pic_asic_type; 
18 u_int16_t   pic_firstport; 
19 pic_periodic_t  pic_periodic; 
20 pic_flavor_t    pic_flavor; 
21 pic_get_port_info_t pic_get_port_info; 
22 void *pic_context; 
23 };

И я получаю следующую ошибку

../../../../../src/pfe/common/drivers/rpio/rpio_tunnel_pvt1.h:9: error: expected     declaration specifiers or '...' before 'boolean'

Я пробовал, в том числе и попытался заменить booleand на bool, а также с _bool до сих пор не помогает. кто-то, пожалуйста, помогите мне здесь

  • 1
    Вам не хватает закрывающей скобки и ; на уровне 9, это проблема копирования-вставки?
  • 1
    C ++ или C? Выберите один, пожалуйста. Я сильно подозреваю, что C ++ является избыточным в вопросе с меткой «ядро Linux».
Показать ещё 3 комментария
Теги:
linux-device-driver
kernel

2 ответа

1
Лучший ответ

Ни Boolean, ни boolean не существует нигде в заголовочных файлах ядра Linux.

Однако в linux/types.h существует bool как

typedef _Bool           bool;

Чтобы получить доступ к этому, вы должны изменить boolean на bool и включить linux/types.h в свой источник.

  • 0
    Стандартный файл включения будет <stdbool.h> . Включение linux/types.h напрямую затруднит перенос кода на платформы, не относящиеся к linux.
  • 1
    Вопрос помечен как ядро и linux-device-driver , поэтому обычные стандартные C здесь не применимы.
Показать ещё 1 комментарий
0

Компилятор не знает, что означает название Boolean. Вы должны включить заголовок, где это имя определено в этом заголовке, прежде чем ссылаться на Boolean

  • 0
    я изменил его на «логическое» все та же ошибка
  • 0
    @ user3409272 В C ++ нет такого ключевого слова, как спецификатор типа, как boolean. Используйте вместо этого bool. Или, если это программа на C, то _Bool или просто int.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню