Я использую компилятор C ++ Builder 2007 Borland (AKA "Embarcodegearland"), в котором есть небольшая ошибка, заключающаяся в том, что определенные static const
элементы из системных заголовочных файлов могут вызывать ложные "xyzzy is declared but never used"
предупреждения.
Я пытаюсь освободить мой код от 100% предупреждений, поэтому я хочу скрыть эти конкретные предупреждения (заметьте, но не просто отключив предупреждение!)
Кроме того, я не могу изменить файлы заголовков. Мне нужен способ «подделать» использование предметов, желательно даже не зная их типа.
В качестве примера, добавление этой функции в мои модули .cpp исправляет предупреждения для этих четырех элементов, но выглядит немного «ad-hoc». Есть ли лучший и желательно самодокументированный способ сделать это?
static int fakeUse()
{
return OneHour + OneMinute + OneSecond + OneMillisecond;
}
РЕДАКТИРОВАТЬ: Алекс предложил что-то вроде этого:
#pragma option push
#pragma warn -8080
#include "dateutils.hpp"
#pragma option pop
... что, к сожалению, не работает, потому что состояние предупреждения не управляется умело компилятором, поэтому сообщения по-прежнему отображаются.
РЕДАКТИРОВАТЬ # 2: У AshleysBrain есть хорошее предложение. Я реализовал это, создав заголовочный файл "dateutils_fix.hpp" следующим образом:
#ifndef DATEUTILS_FIXH
#define DATEUTILS_FIXH
#include <dateutils.hpp>
static void FIX_DATEUTIL_WARNINGS()
{
UNREFERENCED(OneHour);
UNREFERENCED(OneMinute);
UNREFERENCED(OneSecond);
UNREFERENCED(OneMillisecond);
}
#endif
... а затем # включая этот заголовок вместо dateutils.hpp в моем собственном коде.