1

我希望这是一个有趣的问题。我正在尝试查找未解析的外部符号的来源。如果打开调试,我有使用全局文件指针的调试代码。所有这些调试代码都应该受到#ifdef 的保护,例如:

#ifdef DO_XLL_DEBUG
fprintf(debugPointer, "hello\n);
...
#endif

当我定义 DO_XLL_DEBUG 时,一切都很好。如果我取消定义 DO_XLL_DEBUG,一切都会编译(我会进行重建以防万一),但它在链接步骤失败,没有找到 debugPointer。

所以,问题是,有没有一种简单的方法可以找到我在调试代码周围没有#ifdef 的地方?我能想到几种不太容易的方法。

我正在使用 Visual Studio 2005。这是一个 C++ 项目。

谢谢!

[编辑]

感谢所有的建议。原来问题出在别人的代码中,这不是我在 Linux 中工作的相应项目的一部分(我在 Linux 上做大部分工作),所以难怪我没有马上找到它。

4

1 回答 1

2

只需定义一些不兼容debugPointer的内容,让编译器将您指向所有意外使用或重新定义的地方。也许是这样的:

#ifndef DO_XLL_DEBUG
#define debugPointer static_assert(false,"damn it!");
#endif

(假设您没有其他被调用的变量、参数等debugPointer

于 2013-10-29T20:58:53.097 回答