g++ - 如何摆脱g++中的 "inline function used but never defined"警告

标签 g++ inline compiler-warnings mingw-w64

我正在使用 mingw-w64。我包括 strsafe.h并收到以下警告:

warning: inline function 'HRESULT StringCchPrintfA(STRSAFE_LPSTR, size_t, STRS
AFE_LPCSTR, ...)' used but never defined [enabled by default]

我使用的唯一标志标志是 -Wall -DDEBUG -g .我知道你必须在同一个标​​题中定义内联函数,我查看了 strsafe.h我可以清楚地看到 StringCchPrintfA在标题中,所以我不知道为什么给我这个错误。另外,这里是 a link to strsafe.h if you want to look at the header yourself .

编辑:

我在网上找到了以下片段(如果有人可以提供更多信息,请告诉我,评论中想说什么?):
// Work around lack of strsafe library in mingw-w64, do let their
// strsafe.h provide inlines of StringCchVPrintfA etc, avoid linking
// errors in a debug build.
#ifdef __CRT__NO_INLINE
#undef __CRT__NO_INLINE
#define DID_UNDEFINE__CRT__NO_INLINE
#endif
extern "C" {

#endif

#include <strsafe.h>

#ifdef __MINGW32__
}

#ifdef DID_UNDEFINE__CRT__NO_INLINE
#define __CRT__NO_INLINE
#endif
#endif

最佳答案

该评论表明应该有一个 strsafe 库,但它不存在。 __CRT__NO_INLINE定义必须暗示某处有一个编译库来提供函数,而不是使用头文件中的内联函数。

因此,如果该库不存在(但它似乎认为应该存在),则允许使用内联函数。

但是,这是为了修复链接错误。编译代码时是否遇到链接错误?或者你只是得到警告?如果您只收到警告,则表示您确实拥有 strsafe 库。完全有可能没有办法消除该消息并仍然使用该函数的编译版本。

关于g++ - 如何摆脱g++中的 "inline function used but never defined"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8513230/

相关文章:

c++ - 使用 g++ 编译 c++ 时缺少 cygwin1.dll

c++ - std::enable_if 有条件地编译一个成员函数

gcc - 对于除字面零之外的所有比较,我能否获得 -Wfloat-equal 的行为?

c++ - 未定义对在单独文件中定义的成员函数的引用

c++ - 删除 using namespace std 会导致程序得到错误的结果

delphi - 不能内联函数吗?

c - 从内存缓冲区读取结构会引发编译器错误和段错误

c++ - 我怎样才能打开(字面上)所有 GCC 的警告?

css - 图像未内联显示

html - 如何让这些无序列表彼此相邻?