jch*_*jch 14 c c99 restrict c11 restrict-qualifier
gcc 5和clang 3.6都不会在restrict限定符的约束被违反的情况下发出警告,即使在调用时也是如此-Wall.请考虑以下代码片段:
extern void f(char *restrict p, char *restrict q);
void g(char *p)
{
f(p, p);
}
Run Code Online (Sandbox Code Playgroud)
天真地,我希望可以静态地确定违规行为,我期待这-Wall会发出警告.我在某个地方错过了一面旗帜,还是在发出一些我没有看到警告的问题?
jch*_*jch 12
从版本8开始,gcc为上面的代码提供了一个有用的警告:
a.c: In function ‘g’:
a.c:5:5: warning: passing argument 1 to restrict-qualified parameter aliases with argument 2 [-Wrestrict]
f(p, p);
^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1899 次 |
| 最近记录: |