c ++ 11 — Запретить связывание с методом c ++

Я пытаюсь запретить использование метода, иметь ошибку компиляции, если какой-то кусок кода использует его.

Это проприетарный устаревший модуль, и я знаю, что некоторые методы проблематичны. У нас есть файлы заголовков и DLL.

Я не могу понять, как использовать этот метод в огромном проекте, который я использую (много определений, некоторые неявные приведения …)

Может ли компилятор остановить (или просто предупредить), если обнаружит использование этого метода?

1

Решение

Ты можешь использовать __declspec(deprecated) в Visual C ++ для генерации предупреждений об использовании определенной функции. Ты можешь использовать #pragma deprecated осудить использование любого символа (включая макросы).

Смотрите больше информации на MSDN. Это может генерировать предупреждения или ошибки (в зависимости от флагов компьютера), но вы можете подавить их при необходимости с дополнительными #pragmas

1

Другие решения

Ну, не уверен, работает ли он или нет (поэтому, пожалуйста, исправьте меня), но вы можете поиграть с созданием библиотек из ваших DLL

что-то по линии, из командной строки VS:

dumpbin /exports yourdll.dll

вы получите вывод символов экспорта и скопируете его в файл .def

отредактируйте файл .def, чтобы удалить ненужные символы

сделайте lib и свяжите это с вашим приложением

lib /def:C:\mydef.def /OUT:C:\mylib.lib
0

По вопросам рекламы [email protected]