草庐IT

void-compatibility

全部标签

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;

c++ - 在将 void* 转换为任何内容时,我应该使用 static_cast 还是 reinterpret_cast

static_cast和reinterpret_cast似乎都可以很好地将void*转换为另一种指针类型。是否有充分的理由偏爱其中一个? 最佳答案 使用static_cast:它是准确描述此处进行的转换的最窄类型。有一种误解,认为使用reinterpret_cast会更好,因为这意味着“完全忽略类型安全,只是从A转换为B”。但是,这实际上并没有描述reinterpret_cast的效果。相反,reinterpret_cast有多种含义,所有含义都认为“reinterpret_cast执行的映射是实现定义的”。[5.2.10.3]但在

c++ - 在将 void* 转换为任何内容时,我应该使用 static_cast 还是 reinterpret_cast

static_cast和reinterpret_cast似乎都可以很好地将void*转换为另一种指针类型。是否有充分的理由偏爱其中一个? 最佳答案 使用static_cast:它是准确描述此处进行的转换的最窄类型。有一种误解,认为使用reinterpret_cast会更好,因为这意味着“完全忽略类型安全,只是从A转换为B”。但是,这实际上并没有描述reinterpret_cast的效果。相反,reinterpret_cast有多种含义,所有含义都认为“reinterpret_cast执行的映射是实现定义的”。[5.2.10.3]但在

c++ - 为什么不可能有对void的引用?

为什么不能引用void?我在C++标准中找到的唯一内容是这一行,位于8.3.2.1Adeclaratorthatspecifiesthetype"referencetocvvoid"isill-formed.为什么会这样?为什么我不能编写一个接受void&的“通用”函数?为了清楚起见,我没有想到使用引用到void可能比使用模板更好的有用应用程序,但我只是对禁止这种构造的理由感到好奇。为了澄清一点,我知道“按原样”使用指向void的引用与取消引用指向void的指针一样毫无意义。但是,我可以将它转换为对-sometype的引用以便使用它,不是吗?事实上,我不明白为什么下面的代码片段可以工作

c++ - 为什么不可能有对void的引用?

为什么不能引用void?我在C++标准中找到的唯一内容是这一行,位于8.3.2.1Adeclaratorthatspecifiesthetype"referencetocvvoid"isill-formed.为什么会这样?为什么我不能编写一个接受void&的“通用”函数?为了清楚起见,我没有想到使用引用到void可能比使用模板更好的有用应用程序,但我只是对禁止这种构造的理由感到好奇。为了澄清一点,我知道“按原样”使用指向void的引用与取消引用指向void的指针一样毫无意义。但是,我可以将它转换为对-sometype的引用以便使用它,不是吗?事实上,我不明白为什么下面的代码片段可以工作

java - 而(真);当不在 void 中时,循环会抛出无法访问的代码

我正在用java做一些小程序。我知道如果我写while(true);程序将卡住在这个循环中。如果代码是这样的:测试1:publicclassWhile{publicstaticvoidmain(String[]args){System.out.println("start");while(true);System.out.println("end");}}编译器向我抛出错误:Exceptioninthread"main"java.lang.Error:Unresolvedcompilationproblem:UnreachablecodeatWhile.main(While.java: