相关疑难解决方法(0)

C99 stdint.h头文件和MS Visual Studio

令我惊讶的是,我刚刚发现MS Visual Studio 2003向上缺少C99 stdint.h.我确定他们有他们的理由,但有谁知道我可以在哪里下载副本?如果没有这个头文件,我就没有uint32_t等有用类型的定义.

c c++ c99 visual-studio

113
推荐指数
6
解决办法
13万
查看次数

Klocwork(或其他工具)可以知道类型,typedef和#define指令吗?

我一直在寻找工具来帮助检测阻止程序作为64位代码正常运行的错误.最近,我一直在玩弄Klocwork及其自定义检查器功能,这让我可以使用XPath将源代码导航为树.这对于正则表达式来说是一种"更聪明"的替代方法,但我无法让它知道类型.

例如,假设我想找到一个for使用a int或a long计数的循环的每个实例.以下代码很容易找到.

for (int i = 0; i < 10; i++)
    // ...
Run Code Online (Sandbox Code Playgroud)

搜索此代码很简单,因为变量定义就在循环内部.但是,请考虑以下示例.

int i;
// ...
for (i = 0; i < 10; i++)
    // ...
Run Code Online (Sandbox Code Playgroud)

这很难找到,因为变量定义与循环是分开的,并且必要的XPath表达式要么笨重,要么容易出错.

那么,自定义Klocwork规则可以找到这样的表达式,其中类型感知是必要的,包括解析typedef#define语句?还有其他工具可以做到这一点吗?

编辑1:考虑以下示例.

typedef int myint;

void Foo() {
    int i;
    for (i = 0; i < 10; i++) {
        Bar();
    }

    myint j;
    for (j = 0; j < 10; j++) {
        Bar();
    }
}
Run Code Online (Sandbox Code Playgroud)

ahmeddirie提供 …

c++ static-analysis klocwork

6
推荐指数
1
解决办法
1089
查看次数

标签 统计

c++ ×2

c ×1

c99 ×1

klocwork ×1

static-analysis ×1

visual-studio ×1