无法在C中使用void变量进行编译

5 c variables types void

test.c的

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

我使用gcc编译,但它给了我一个错误:

错误:变量或字段'a'声明为void

从我在这里读到的,我以为我可以毫无问题地声明void变量.

Jac*_*ack 9

如您的链接所述:

一个本身声明为void的变量(例如上面的my_variable)是无用的; 它不能赋值,不能转换为其他类型,实际上不能以任何方式使用.

这意味着虽然语法正确,但void声明对任何东西都没用,这就是GCC认为它是错误的原因.即使它会编译,你也无法对变量做任何事情,所以我猜你的问题只与测试这种行为有关.

实际上void,当我们讨论指针(void*)时,它很有用,因为它允许您在不指定类型的情况下声明通用指针.

  • void也可用作返回类型.<G> (2认同)

cni*_*tar 5

不,但你可以声明一个无效指针:void *.A void *可以保存任何对象指针.

void*只能保证保存对象(即数据)指针

[但]

将函数指针转换为void*是不可移植的