c++ - 如果调用某些函数,我可以强制编译器错误吗?

标签 c++ visual-studio-2010 visual-c++ compiler-errors compiler-warnings

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

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

如果在 v2 中使用任何 GetProfile... 或 WriteProfile... 函数,我希望引发编译器错误。

我们在 Visual Studio 2010 中使用 C++。如果没有内置任何内容,我可以使用脚本的输出以某种方式引发编译器错误吗?

最佳答案

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

jacobsee 发现了 deprecated pragma

#pragma deprecated(GetProfileInt)

原答案:

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

UINT __declspec(deprecated) WINAPI GetProfileInt(
  __in  LPCTSTR lpAppName,
  __in  LPCTSTR lpKeyName,
  __in  INT nDefault
);

您必须从包含在您关心的每个翻译单元中的标题中执行此操作。这样做会在任何时候包含已弃用声明的翻译单元使用该函数时发出警告。

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

关于c++ - 如果调用某些函数,我可以强制编译器错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10727418/

相关文章:

c++ - 将使用 stdafx 的 MSVC 项目移植到 xcode 中的简单方法?

c++ - 计算字符串中的元音、辅音、数字和其他符号

c++ - Microsoft Visual C++ 6.0 破坏项目

c++ - 有没有办法知道特定于 Visual C++ 的可变函数参数的数量?

c++ - 汇编代码与我的 C++ 代码混合在一起。如何移植到 64 位

c++ - 得到 "does not name a type when using static variable in *.c file"

c++ - 从源文件添加编译时消息

c++ - 合并两个已排序的链表

sql-server - Visual Studio 2010 中的数据库设计器

c++ - 如何定义指向类成员函数的指针