草庐IT

c++ - 转换到 `void` 的真正作用是什么?

这个问题在这里已经有了答案:Whycastunusedreturnvaluestovoid?(10个回答)关闭去年。像(void)x;这样经常使用的语句允许抑制关于未使用变量x的警告。但是如果我尝试编译以下内容,我会得到一些我不太明白的结果:intmain(){intx;(short)x;(void)x;(int)x;}使用g++编译,我收到以下警告:$g++test.cpp-Wall-Wextra-otesttest.cpp:Infunction‘intmain()’:test.cpp:4:13:warning:statementhasnoeffect[-Wunused-value]

c++ - 转换到 `void` 的真正作用是什么?

这个问题在这里已经有了答案:Whycastunusedreturnvaluestovoid?(10个回答)关闭去年。像(void)x;这样经常使用的语句允许抑制关于未使用变量x的警告。但是如果我尝试编译以下内容,我会得到一些我不太明白的结果:intmain(){intx;(short)x;(void)x;(int)x;}使用g++编译,我收到以下警告:$g++test.cpp-Wall-Wextra-otesttest.cpp:Infunction‘intmain()’:test.cpp:4:13:warning:statementhasnoeffect[-Wunused-value]

c++ - 表达式 "(ptr == 0) != (ptr == (void*)0)"真的可以吗?

我在aforumthread中阅读了此声明链接到inacommentby@jsantander:Keepinmindthatwhenyouassignorcompareapointertozero,thereissomespecialmagicthatoccursbehindthescenestousethecorrectpatternforthegivenpointer(whichmaynotactuallybezero).Thisisoneofthereasonswhythingslike#defineNULL(void*)0areevil–ifyoucompareachar*to

c++ - 表达式 "(ptr == 0) != (ptr == (void*)0)"真的可以吗?

我在aforumthread中阅读了此声明链接到inacommentby@jsantander:Keepinmindthatwhenyouassignorcompareapointertozero,thereissomespecialmagicthatoccursbehindthescenestousethecorrectpatternforthegivenpointer(whichmaynotactuallybezero).Thisisoneofthereasonswhythingslike#defineNULL(void*)0areevil–ifyoucompareachar*to

c++ - 为什么要在参数中放置 void?

在参数中放置void的原因是什么?为什么不把它留空呢?voidcreateLevel(void);voidcreateLevel(); 最佳答案 括号中的void来自C。在C中,带空括号的函数可以有任意数量的参数。在C++中它没有任何区别。 关于c++-为什么要在参数中放置void?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5587207/

c++ - 为什么要在参数中放置 void?

在参数中放置void的原因是什么?为什么不把它留空呢?voidcreateLevel(void);voidcreateLevel(); 最佳答案 括号中的void来自C。在C中,带空括号的函数可以有任意数量的参数。在C++中它没有任何区别。 关于c++-为什么要在参数中放置void?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5587207/

c++ - 为什么要在方法参数列表中添加 void

我见过具有以下签名的方法:voidfoo(void);他们没有争论,但是我想知道这样做是否有用。你有什么理由想要这样做吗? 最佳答案 这是对旧版本C的保留,其中foo()表示“具有未知数量参数的函数”,而foo(void)表示“一个零参数的函数。”在C++中,foo()和foo(void)都表示“零参数的函数”,但有些人更喜欢第二种形式,因为它更明确。 关于c++-为什么要在方法参数列表中添加void,我们在StackOverflow上找到一个类似的问题: h

c++ - 为什么要在方法参数列表中添加 void

我见过具有以下签名的方法:voidfoo(void);他们没有争论,但是我想知道这样做是否有用。你有什么理由想要这样做吗? 最佳答案 这是对旧版本C的保留,其中foo()表示“具有未知数量参数的函数”,而foo(void)表示“一个零参数的函数。”在C++中,foo()和foo(void)都表示“零参数的函数”,但有些人更喜欢第二种形式,因为它更明确。 关于c++-为什么要在方法参数列表中添加void,我们在StackOverflow上找到一个类似的问题: h

c++ - 将 void 指针增加一个字节?两个?

我有一个名为ptr的空指针。我想将此值增加多个字节。有没有办法做到这一点?请注意,我想就地执行此操作,而不创建更多变量。我可以做类似ptr=(void*)(++((char*)ptr));的事情吗? 最佳答案 您不能对void指针执行算术运算,因为指针算术是根据指向对象的大小定义的。但是,您可以将指针转换为char*,对该指针进行算术运算,然后将其转换回void*:void*p=/*getapointersomehow*/;//InC++:p=static_cast(p)+1;//InC:p=(char*)p+1;

c++ - 将 void 指针增加一个字节?两个?

我有一个名为ptr的空指针。我想将此值增加多个字节。有没有办法做到这一点?请注意,我想就地执行此操作,而不创建更多变量。我可以做类似ptr=(void*)(++((char*)ptr));的事情吗? 最佳答案 您不能对void指针执行算术运算,因为指针算术是根据指向对象的大小定义的。但是,您可以将指针转换为char*,对该指针进行算术运算,然后将其转换回void*:void*p=/*getapointersomehow*/;//InC++:p=static_cast(p)+1;//InC:p=(char*)p+1;