gpt4 book ai didi

debian - .splintrc 预处理器指令 -D 中的空格

转载 作者:行者123 更新时间:2023-12-04 15:59:32 27 4
gpt4 key购买 nike

我要跑 splint我在 debian 稳定环境中的一些来源。
我需要给预处理器指令 -DUINT16_T='unsigned short'因为我经常需要它。我想把它放在我的 .splintrc 里面文件。
从命令行运行时,如 splint -DUINT16_T='unsigned short' mysource.c它运行良好。如果把这条线移到我的 .splintrc文件

-DUINT16_T='unsigned short'
-I/usr/local/include/
splint调用结果
Cannot list files in .splintrc files:
short' (probable missing + or -)
A flag is not recognized or used in an incorrect way (Use -badflag to inhibit
warning)

有人有解决方案吗? (请不要使用别名)。

为了进一步讨论,我将提供一个 mnwe(最小不工作示例) hello.c ,这可能会有所帮助:
#include <stdio.h>

int main (void)
{
UINT16_T returnvalue=0;
printf ("Hello, world!\n");
return returnvalue;
}

命令 gcc -DUINT16_T='unsigned short' hello.c运行良好 - 也是 splint -DUINT16_T='unsigned short' hello.c这当然声称
Return value type unsigned short int does not match declared type
int: returnvalue

但同样,我如何将这个 DEFINE 包含到我的 .splintrc 中?

最佳答案

——新答案——

你问的只是没有在夹板中实现。

如果你看夹板 3.1.2 rcfiles_loadFile rcfiles.c 第 124 行中的函数

124          while ((c = *s) != '\0')
125 { /* remember to handle spaces and quotes in -D and -U ... */
126 if (escaped)
127 {
128 escaped = FALSE;
129 }
130 else if (quoted)
131 {
132 if (c == '\\')
133 {
134 escaped = TRUE;
135 }
136 else if (c == '\"')
137 {
138 quoted = FALSE;
139 }
140 else
141 {
142 ;
143 }
144 }
145 else if (c == '\"')
146 {
147 quoted = TRUE;
148 }
149 else
150 {
151 if (c == ' ' || c == '\t' || c == '\n')
152 {
153 /*@innerbreak@*/ break;
154 }
155 }
156
157 s++;
158 incColumn ();
159 }

您会看到第 125 行中的注释是您所要求的 TODO。

我将第 151 行更改为
151                  if (c == '\t' || c == '\n')

编译,运行,然后你的最小不工作示例(在 .splintrc 中没有引号)通过测试没有问题。

然而,这种修改有点粗糙,因为一些夹板单元测试然后失败了。

关于debian - .splintrc 预处理器指令 -D 中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15220228/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com