Типы возврата нестандартных функций: Исправление ошибки синтаксического анализа

Я использую компилятор XC8 C встраиваемой системы (для микропроцессоров PIC). Допускается следующее:

bit foo(){ //... } 

но, будучи нестандартным C, статический анализатор Splint дает следующую ошибку:

Ошибка анализа: объявление нефункции: бит: “————————————–” внутр.

И файл / строка ошибки является прототипом функции в соответствующем файле .h.

Как я могу исправить это, чтобы Splint мог анализировать остальную часть файла (ов)? Я думаю, что может быть два пути:

  1. Я думаю, что я помню, что видел флаг, который может быть передан в Splint через CLI, который говорит ему заменить данный нестандартный тип стандартным типом (например, бит на неподписанный символ), но я не могу найти его вообще!

  2. Кроме того, возможно, существует альтернативный способ написать код c, который удовлетворяет требованиям ANSI-C, а также позволяет XC8 интерпретировать возвращаемый тип как bit ?

Прогресс:

Я нашел следующее на форуме, но я не могу найти информацию о том, как использовать флаг -D в руководстве :

Чтобы игнорировать ключевое слово, добавьте -Dnonstandardkeyword =, чтобы препроцессор устранил это

А также

use -Dspecialtype = int, чтобы выполнить индивидуальный синтаксический анализ как int.

Если для программы анализа нет возможности выполнить подстановку, вы можете, конечно, сделать это, используя препроцессор.

Есть что-то вроде:

 #if defined RUNNING_SPLINT #define bit unsigned char #endif 

например, заголовок, который вы убедитесь, включен везде, enter code here и убедитесь, что вы определяете символ RUNNING_SPLINT когда Splint видит код. Для этого у него есть флаг -D .

Это было в FAQ:

http://www.splint.org/faq.html

Чтобы процитировать это:

16. Я разрабатываю код на встроенной системе с компилятором, который использует нестандартные ключевые слова и типы данных. Я хотел бы запустить Splint в моем коде, но эти нестандартные ключевые слова вызывают ошибки синтаксического анализа. Что я должен делать?

Вы можете часто использовать -D для решения этой проблемы.

Если вы просто хотите игнорировать ключевое слово, вы можете добавить -Dnonstandardkeyword =, чтобы препроцессор устранил ключевое слово, где нестандартное ключевое слово – это имя ключевого слова. Точно так же вы можете использовать -Dspecialtype = int, чтобы сделать собственный синтаксический анализ как int.