代码如下:

char path = "/temp/abc";
if (mkfifo(path, S_IRWXU) != -1)
{
    /* Other codes. */
}

如果是支票的话,我有Klocwork Misra:
按位运算的操作数的类型为“int”,而不是“unsigned integer”
在同一行,林特说:
违反Misra 2004要求的规则10.1,禁止隐式转换:有符号与无符号
但我知道mkfifo采用的第二个参数是mode_t类型,它实际上应该是一个无符号整数。如我们所知
#deinf S_IRWXU  (__S_IREAD|__S_IWRITE|__S_IEXEC)

应该没问题。
知道我为什么会收到这样的警告吗?

最佳答案

我不知道klocwork是什么,但我的猜测是,s_irwxu和其他常量要么被定义为枚举,要么被定义为c预处理器定义为整数文本;在这两种情况下,它们都将具有类型[有符号]in t;因此不匹配。

关于linux - 为什么Klocwork提示S_IRWXU是一个int?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18570649/

10-09 08:59