小编Sve*_*enS的帖子

误报错误503用于调用模板功能

我有一些PC-Lint给我的代码错误503:关系 on的布尔参数.它是对模板函数的调用,其定义如下:

template <typename ITypeToUse>
void ShowWindowEx(
    HWND hWnd,
    int nCmdShow,
    ITypeToUse *pControl);
Run Code Online (Sandbox Code Playgroud)

调用本身看起来像这样:

ShowWindowEx<IActualType>(this->GetWndHandle(), SW_SHOW, m_spControl);
Run Code Online (Sandbox Code Playgroud)

ShowWindowEx<IActualType>(...)显然,该部分被解释为Identifier1 < Identifier2 > Expression...... PC-Lint似乎不知道这ShowWindowEx是一个模板函数,它需要一个有角度的括号中的类型,并尽力将其解释为布尔表达式.

我知道我可以简单地告诉lint忽略这一行的错误(虽然实际上它大约有30行),但我想防止这种情况再次发生.另外,据我所知,PC-Lint应该能够处理模板函数调用,任何想法为什么不是这里的情况?

声明位于标题中的一个类中,并且该调用位于该类的另一个成员函数中,该函数在ShowWindowEx之前声明.两个成员函数的实现在.cpp文件中以相同的顺序发生,因此对ShowWindowEx的调用在其实现之前发生.PC-Lint是否可以忽略标题?

编辑:我现在将函数原型更改为:

template <typename IPointerToUse>
void ShowWindowEx(
    HWND hWnd,
    int nCmdShow,
    IPointerToUse pControl);
Run Code Online (Sandbox Code Playgroud)

因此模板将处理作为指针的类型.感谢DeadMG的建议.问题仍然存在,因为我认为上述情况不应该有效,但它也是这样.

c++ com templates lint atl

5
推荐指数
1
解决办法
487
查看次数

标签 统计

atl ×1

c++ ×1

com ×1

lint ×1

templates ×1