-fdump-ada-spe c: «FILE» не объявлен - PullRequest
1 голос
/ 09 апреля 2020

Перекрестная публикация, нет ответа на comp.lang.ada.

Я пытаюсь сгенерировать привязки Ada для пакета GSL (Gnu Scientifi c) odeiv2 (обыкновенные дифференциальные уравнения). Поэтому я делаю следующие 2 шага:

  1. Go в пустой каталог "sr c" и выполняю

    g ++ - c -fdump-ada -spe c - C /usr/include/gsl/gsl_odeiv2.h

  2. Go в пустой каталог "obj" и выполнить

    g cc - c -gnat05 ../src/*.ads

К сожалению, gsl_odeiv2.h включает stdio.h, что приводит к ряду ошибок, таких как

stdio_h.ads:117:69: "FILE" not declared in "x86_64_linux_gnu_bits_types_FILE_h"

Как ни странно, FILE объявлен , я нашел его в /usr/include/x86_64-linux-gnu/bits/types/FILE.h, который включен в stdio. h.

Полагаю, мне даже не нужен FILE для моего приложения odeiv2. Так есть кто-нибудь подсказка, как избавиться от этой ошибки?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Проблема появилась снова с другими C файлами, но на этот раз я нашел решение в Интернете. Из интерфейсов. C_Streams:

  subtype FILEs is System.Address;
  -- Corresponds to the C type FILE*
0 голосов
/ 10 апреля 2020

В сверхсекретной документации GNAT говорится:

GNAT включает в себя генератор привязки для заголовков C и C ++, который предназначен для выполнения 95% трудоемкой работы генерация спецификаций Ada из заголовочных файлов C или C ++.

Обратите внимание, что эта возможность не предназначена для генерации 100% корректных спецификаций Ada, и в некоторых случаях она требует ручной корректировки, хотя ее часто можно использовать вне поле на практике.

Таким образом, вы должны ожидать ручной корректировки сгенерированных привязок, если они не работают как сгенерированные.

...