草庐IT

void-compatibility

全部标签

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:

c++ - "typedef void (*Something)()"是什么意思

我试图理解这意味着什么,我正在查看的代码有在.htypedefvoid(*MCB)();staticMCBm_process;在.C中MCBModes::m_process=NULL;有时当我这样做时m_process();我得到段错误,可能是因为内存被释放了,当它被释放时我该如何调试? 最佳答案 它定义了一个指向函数的类型。函数返回void,参数列表未指定,因为问题(当前,但可能错误地)标记为C;如果它被标记为C++,那么该函数将根本不接受任何参数。要使其成为不带参数的函数(在C中),您可以使用:typedefvoid(*MCB)

c++ - "typedef void (*Something)()"是什么意思

我试图理解这意味着什么,我正在查看的代码有在.htypedefvoid(*MCB)();staticMCBm_process;在.C中MCBModes::m_process=NULL;有时当我这样做时m_process();我得到段错误,可能是因为内存被释放了,当它被释放时我该如何调试? 最佳答案 它定义了一个指向函数的类型。函数返回void,参数列表未指定,因为问题(当前,但可能错误地)标记为C;如果它被标记为C++,那么该函数将根本不接受任何参数。要使其成为不带参数的函数(在C中),您可以使用:typedefvoid(*MCB)

c++ - 为什么编译器更喜欢 f(const void*) 而不是 f(const std::string &)?

考虑以下代码:#include#include//voidf(constchar*){std::cout我使用g++(Ubuntu6.5.0-1ubuntu1~16.04)6.5.020181026编译了这个程序:$g++-std=c++11strings_1.cpp-Wall$./a.outconstvoid*请注意,注释是为了测试而存在的,否则编译器会使用f(constchar*)。那么,为什么编译器会选择f(constvoid*)而不是f(conststd::string&)? 最佳答案 转换为std::string需要“用户

c++ - 为什么编译器更喜欢 f(const void*) 而不是 f(const std::string &)?

考虑以下代码:#include#include//voidf(constchar*){std::cout我使用g++(Ubuntu6.5.0-1ubuntu1~16.04)6.5.020181026编译了这个程序:$g++-std=c++11strings_1.cpp-Wall$./a.outconstvoid*请注意,注释是为了测试而存在的,否则编译器会使用f(constchar*)。那么,为什么编译器会选择f(constvoid*)而不是f(conststd::string&)? 最佳答案 转换为std::string需要“用户

c++ - 为什么 (void) 0 在 C 和 C++ 中是无操作?

我在glibc中看到了debugprintfs,如果NDEBUG被定义,它内部定义为(void)0。__noop也是如此对于VisualC++编译器也有。前者适用于GCC和VC++编译器,而后者仅适用于VC++。现在我们都知道,以上两条语句都将被视为无操作,不会生成相应的代码;但这是我有疑问的地方。对于__noop,MSDN说它是编译器提供的内在函数。来到(void)0~为什么它被编译器解释为没有操作?它是C语言的一个棘手用法,还是标准明确说明了它?甚至这与编译器实现有关? 最佳答案 (void)0(+;)是有效的,但“无所作为”的

c++ - 为什么 (void) 0 在 C 和 C++ 中是无操作?

我在glibc中看到了debugprintfs,如果NDEBUG被定义,它内部定义为(void)0。__noop也是如此对于VisualC++编译器也有。前者适用于GCC和VC++编译器,而后者仅适用于VC++。现在我们都知道,以上两条语句都将被视为无操作,不会生成相应的代码;但这是我有疑问的地方。对于__noop,MSDN说它是编译器提供的内在函数。来到(void)0~为什么它被编译器解释为没有操作?它是C语言的一个棘手用法,还是标准明确说明了它?甚至这与编译器实现有关? 最佳答案 (void)0(+;)是有效的,但“无所作为”的

c++ - 在 C++ 非 void 函数中使用 throw 替换 return

在C++函数中,将return替换为throw是一种好习惯吗?例如,我有以下代码//returnindicesoftwonumberswhosesumisequaltotargetvectortwoSum(vector&nums,inttarget){for(inti=0;i{i,j};}//returnvector{};throw"nosolution";}上面的代码用我的GCC7.2编译。 最佳答案 InC++functions,isitagoodpracticetoreplacereturnwiththrow?return不是

c++ - 在 C++ 非 void 函数中使用 throw 替换 return

在C++函数中,将return替换为throw是一种好习惯吗?例如,我有以下代码//returnindicesoftwonumberswhosesumisequaltotargetvectortwoSum(vector&nums,inttarget){for(inti=0;i{i,j};}//returnvector{};throw"nosolution";}上面的代码用我的GCC7.2编译。 最佳答案 InC++functions,isitagoodpracticetoreplacereturnwiththrow?return不是

pointers - Go 相当于 C 中的 void 指针

我一直在使用Go制作一些数据结构库,但我遇到了一个大问题。我希望数据结构能够包含任何类型,但我在Go中看不到任何方法可以做到这一点,因为你不能声明void指针,而且它们没有像NSObject这样的类,所有东西都继承自。我如何在Go中实现同样的功能? 最佳答案 根据theGoProgrammingLanguageSpecification:Atypeimplementsanyinterfacecomprisinganysubsetofitsmethodsandmaythereforeimplementseveraldistinctin