Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “内置”和“内置”的区别是什么;“无效”;及;“无效”;从「;typedef void void“;?_C++_Typedef_Void - Fatal编程技术网

C++ “内置”和“内置”的区别是什么;“无效”;及;“无效”;从「;typedef void void“;?

C++ “内置”和“内置”的区别是什么;“无效”;及;“无效”;从「;typedef void void“;?,c++,typedef,void,C++,Typedef,Void,我偶然发现以下问题: typedef void VOID; class Cls1 { public: VOID Clear(VOID); }; 并且编译器(g++4.6.1)报告了 错误:“匿名”的类型不完整 错误:“无效使用'VOID{aka VOID}” “void”与“void”不同有什么特殊原因吗?好的,clang编译器会给出一个可读性更高的错误: test.cpp:14:20:错误:使用typedef定义的空参数列表 C++中不允许使用“空洞” 无效清除(无效) 没什么不同 <

我偶然发现以下问题:

typedef void VOID;

class Cls1
{
public:
  VOID Clear(VOID);
};
并且编译器(g++4.6.1)报告了

错误:“匿名”的类型不完整 错误:“无效使用'VOID{aka VOID}”


“void”与“void”不同有什么特殊原因吗?

好的,clang编译器会给出一个可读性更高的错误:

test.cpp:14:20:错误:使用typedef定义的空参数列表 C++中不允许使用“空洞” 无效清除(无效)


没什么不同


< C++空参数列表中的P>是空的,不是“空”。

我更喜欢显式地添加“空”来作为空参数列表,如C空参数列表中没有“空隙”假设您可以通过任意参数。@ XIS19:您需要决定是否编写C或C++代码。在C++中,空参数列表是idiomatic@xis19-好的。薇欧薇,我喜欢用一开始的“$$”来命名所有的C++变量,因为这是Perl中所做的。@ XIS19,C没有成员函数,在C函数中,成员函数没有意义。在C++中,代码> f(空)被认为是讨厌的,但对于C兼容性是容忍的。用typedef做同样的事情是非常讨厌的,甚至是不允许的。用typedef声明空参数列表是不标准的。这个问题我见过很多次。在问问题之前先试试谷歌。