Я использую компилятор Borland (он же Embarcodegearland) C++Builder 2007, в котором есть небольшая ошибка, заключающаяся в том, что определенные static const элементы из системных заголовочных файлов могут вызывать ложные "xyzzy is declared but never used" предупреждения.
Я пытаюсь получить свой код на 100% без предупреждений, поэтому мне нужен способ замаскировать эти конкретные предупреждения (обратите внимание, но не просто отключив предупреждение!)
Кроме того, я не могу изменить файлы заголовков. Мне нужен способ «имитировать» использование предметов, желательно даже не зная их типа.
Например, добавление этой функции в мои модули .cpp устраняет предупреждения для этих четырех элементов, но это кажется немного «специальным». Есть ли лучший и предпочтительно самодокументирующийся способ сделать это?
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 в свой собственный код.