如果调用某些函数,是否可以强制编译错误?

jac*_*see 12 c++ compiler-errors visual-studio-2010 compiler-warnings visual-c++

我有我的软件的v1和v2版本.v1使用注册表来保存设置,大量调用GetProfileInt等.v2现在使用sqlite db来保存设置.

我们目前正在开发这两个分支,并且正在将v1的新功能合并到v2分支.我们当前必须记住更新任何注册表调用以使用新的配置数据库,这已经错过了几次.

我想要的是在v2中使用任何GetProfile ...或WriteProfile ...函数时抛出编译器错误.

我们在Visual Studio 2010中使用C++.如果没有内置的东西,我可以使用脚本的输出以某种方式抛出编译器错误吗?

bam*_*s53 12

由于这个答案被接受,我不妨包括提问者实际使用的解决方案:

雅各布发现了被弃用的pragma

#pragma deprecated(GetProfileInt)
Run Code Online (Sandbox Code Playgroud)

原始答案:

您可以使用将其声明为已弃用__declspec(deprecated).它看起来像这样:

UINT __declspec(deprecated) WINAPI GetProfileInt(
  __in  LPCTSTR lpAppName,
  __in  LPCTSTR lpKeyName,
  __in  INT nDefault
);
Run Code Online (Sandbox Code Playgroud)

您必须从您关注的每个翻译单元中包含的标题中执行此操作.只要包含已弃用声明的翻译单元使用该功能,这样做会导致警告.

如果您想要编译器错误,并且您的项目尚未将警告视为错误,那么您必须打开它,并且可能修复您忽略的所有警告.(无论您是否使用此解决方案,这些都是很好的做法.)