Error c218: Unknown class/interface '%'

Материал из wikiru.visual-prolog.com

Когда возникает эта ошибка при компиляции, это часто удивляет программиста. Причина заключается в том, что IDE предпринимает все, что может, чтобы уберечь Вас от этой проблемы.

Когда Вы пишете:

class xxx : inputStream
  ...

интерфейс inputStream должен быть известен. Если он неизвестен, то Вы получите именно это сообщение.

Интерфейс известен, если файл, который определяет этот интерфейс, включен (included) пакетным (.pack) файлом, который компилируется. Очень часто нет необходимости беспокоиться по поводу директив include, поскольку IDE вставляет их для Вас автоматически (такое поведение управляется установками в IDE). Если соответствующий интерфейс встретился в проекте (в процессе компиляции), IDE знает какую директиву include следует вставить, чтобы интерфейс оказался известным. И IDE вставляет директиву include и вызывает перекомпиляцию соответствующего пакетного файла (.pack). Ошибка исчезает и Вы не видите сообщение о ней.

Однако, если интерфейс никогда не встречался прежде, то IDE не знает, какую директиву include вставить и ошибка остается. И это как раз есть та ситуация, когда Вы видите сообщение об ошибке. Именно здесь вы и удивлены: "Я давно так написал и никогда такой проблемы не возникало. Что теперь-то произошло?"

Есть два способа устранения причин такого рода ошибки:

  1. Либо допишите вручную директиву include в соответствующем месте
  2. Либо добавьте пакет, содержащий интерфейс или класс и перекомпилируйте проект снова, поскольку теперь интерфейс/класс стал известен и IDE сама вставит соответствующую директиву include.

Ссылки