相关疑难解决方法(0)

奇怪的编译器警告C:警告:在参数列表中声明'struct'

我刚刚发现C中的一个怪癖,我觉得很困惑.在C语言中,可以在声明结构之前使用指向结构的指针.这是一个非常有用的功能,因为当您处理指向它的指针时,声明是无关紧要的.我刚刚找到一个角落的情况,但是(令人惊讶的是)这不是真的,我无法解释原因.对我来说,这似乎是语言设计中的一个错误.

拿这个代码:

#include <stdio.h>

#include <stdlib.h>


typedef void (*a)(struct lol* etc);

void a2(struct lol* etc) {

}

int main(void) {
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

得到:

foo.c:6:26: warning: ‘struct lol’ declared inside parameter list [enabled by default]
foo.c:6:26: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
foo.c:8:16: warning: ‘struct lol’ declared inside parameter list [enabled by default]
Run Code Online (Sandbox Code Playgroud)

要解决此问题,我们可以简单地执行此操作:

#include <stdio.h>

#include <stdlib.h>

struct lol* wut;

typedef void (*a)(struct lol* etc);

void …
Run Code Online (Sandbox Code Playgroud)

c

19
推荐指数
3
解决办法
3万
查看次数

标签 统计

c ×1