标签: void

变量或字段声明为void

我有一个叫做的函数:

void initializeJSP(string Experiment)
Run Code Online (Sandbox Code Playgroud)

在我的MyJSP.h文件中,我有:

2: void initializeJSP(string Experiment);
Run Code Online (Sandbox Code Playgroud)

当我编译时,我收到此错误:

MyJSP.h:2错误:变量或字段initializeJSP声明为void

问题出在哪儿?

c++ string void

45
推荐指数
2
解决办法
10万
查看次数

一劳永逸地理解C和C++中f()和f(void)之间的区别

好的,所以我听到了关于这个主题的不同意见,只是想确保我理解正确.

对于C++

声明void f();void f(void);意思完全相同,功能f不带任何参数.同样的定义.

对于C.

声明void f(void);意味着f不带任何参数.

声明void f();意味着函数f可能有也可能没有参数,如果有,我们不知道它们是什么类型的参数,或者它们有多少参数.请注意,它与省略号不同,我们无法使用va_list.

现在这里的事情变得有趣了.

情况1

宣言:

void f();
Run Code Online (Sandbox Code Playgroud)

定义:

void f(int a, int b, float c)
{
   //...
}
Run Code Online (Sandbox Code Playgroud)

案例2

宣言:

void f();
Run Code Online (Sandbox Code Playgroud)

定义:

void f()
{
   //...
}
Run Code Online (Sandbox Code Playgroud)

题:

当我们f使用正确的参数,错误的参数和根本没有参数调用时,在情况1和2的编译时会发生什么?运行时会发生什么?

附加问题:

如果我f用参数声明,但没有它们来定义它,它会有所作为吗?我应该能够解决函数体中的参数吗?

c c++ function void

42
推荐指数
2
解决办法
2万
查看次数

无效为返回类型

我用PHP 7测试了返回类型.

我创建了一个简单的脚本来测试PHP 7的返回类型:

<?php

Class Obj {

    public function __construct(){

    }

    public function test(): string { //a string needs to be returned
        return "ok";
    }

}

function foo(): Obj { //instance of Obj needs to be returned
    return new Obj();
}

$o = foo();
echo $o->test(); // output: ok
Run Code Online (Sandbox Code Playgroud)

现在,当您指定返回类型时,在其他编程语言中,void这意味着您无法返回任何内容,否则您将收到错误.所以我写了这个脚本:

<?php

    function foo(): void {

    }

    foo(); 
Run Code Online (Sandbox Code Playgroud)

现在在上面的脚本中,预期的输出是什么.相反,它给了我一个致命的错误:

致命错误:foo()的返回值必须是void的实例,在第2行返回none

我的问题是(我找不到),在PHP 7中会有类似的void类型吗?

php return-type void php-7

42
推荐指数
3
解决办法
4万
查看次数

`((void(*)())0x1000)();`是什么意思?

这是一个代码,目的是将程序计数器设置为跳转到地址0x1000.我知道它做了什么,但我不明白怎么做.这与我缺乏C语言知识有关.可能你可以赐教.这是声明/功能(我甚至不知道它是什么:))

((void (*)())0x1000)();
Run Code Online (Sandbox Code Playgroud)

我认为它是指向返回void并且不接受任何参数的函数的指针.如果我错了,请纠正我.

c pointers void

39
推荐指数
4
解决办法
3438
查看次数

为什么我们不能声明void类型的变量?

我正在寻找标准中对这一事实的正式解释.我已经找到了3.9.1/9所说的内容并尝试用该部分作出解释.

第3.9.1/9节,N3797:

void类型具有一组空值.void类型是不完整的类型,无法完成.它用作不返回值的函数的返回类型.任何表达式都可以显式转换为cv void(5.4)类型.void类型的表达式只能用作表达式语句(6.2),作为逗号表达式(5.18)的操作数,作为?:( 5.16)的第二个或第三个操作数,作为typeid,noexcept或者操作数的操作数. decltype,作为返回类型为void的函数的返回语句(6.6.3)中的表达式,或者作为显式转换为类型cv void的操作数.

我不明白它是如何暗示void类型有一组空的值?

假设类型T具有一组空值.为什么编译器在遇到以下行时会抛出错误:

extern T v; 
Run Code Online (Sandbox Code Playgroud)

我们可以通过以下方式对不完整类型的变量进行decalre:

#include <iostream>
#include <cstring>

using namespace std;

struct Foo;

extern Foo f; //OK!

int main()
{
}
Run Code Online (Sandbox Code Playgroud)

它工作正常

DEMO

它不能在void类型上完成

#include <iostream>
#include <cstring>

using namespace std;

extern void f; //compile-time error

int main()
{
}
Run Code Online (Sandbox Code Playgroud)

DEMO

c++ void language-lawyer

38
推荐指数
2
解决办法
2万
查看次数

什么是System.Void?

我知道声明的方法void不会返回任何内容.

但似乎在C#void中只是一个关键字,而是一个真实的类型.
void是一个别名System.Void就像int那是System.Int32.

为什么我不允许使用那种类型? 它没有任何意义,但这只是对逻辑的一些想法.

也不

var nothing = new System.Void();
Run Code Online (Sandbox Code Playgroud)

(说我应该使用void(不是别名?))
也不是

var nothing = new void();
Run Code Online (Sandbox Code Playgroud)

编译.

也不可能使用这样的东西:

void GiveMeNothing() { }
void GiveMeNothingAgain()
{
    return GiveMeNothing();
}
Run Code Online (Sandbox Code Playgroud)

那么重点是什么System.Void

.net c# void

37
推荐指数
4
解决办法
7094
查看次数

为什么C#不允许我将void方法作为return语句的一部分调用?

我很好奇,如果有一个合理的原因,当调用方法的返回类型也是void时,为什么C#不支持调用void方法作为return语句的一部分.

public void MethodA() 
{ 
    return; 
}

public void MethodB() 
{
    return MethodA();
}
Run Code Online (Sandbox Code Playgroud)

所以我们通常会看到这个:

public void MethodMeh() 
{
    if (expression) 
    {
        MethodA();
        return;
    }

    // Do more stuff
}
Run Code Online (Sandbox Code Playgroud)

......当我们可以使用它时:

public void MethodAwesome() 
{
    if (expression) 
        return MethodA();

    // Do more stuff
}
Run Code Online (Sandbox Code Playgroud)

由于C#如何处理void,这是一种语言限制吗?

c# void

37
推荐指数
3
解决办法
1万
查看次数

如何删除void指针?

在C++中删除这样的对象有什么不对吗?

MyCls* c = new MyCls();
void* p = (void*)c;
delete (MyCls*)p;
Run Code Online (Sandbox Code Playgroud)

c++ pointers void delete-operator

37
推荐指数
2
解决办法
1万
查看次数

为什么 TypeScript 有 `void` 和 `undefined`?

在 TypeScript 中,您可以将函数注释为返回void

function fn1(): void {
  // OK
}

function fn2(): void {
  // Error
  return 3;
}
Run Code Online (Sandbox Code Playgroud)

您还可以注释要返回的函数undefined

function fn3(): undefined {
  // OK
  return;
}

function fn4(): undefined {
  // Error
  return 3;
}
Run Code Online (Sandbox Code Playgroud)

所以看起来如果你调用一个返回的函数void,你总是会得到值undefined。但是你不能写这个代码:

function fn5(): void {
}
let u: undefined = fn5(); // Error
Run Code Online (Sandbox Code Playgroud)

为什么不void只是 的别名undefined?它真的需要存在吗?

undefined void typescript

37
推荐指数
1
解决办法
6486
查看次数

JavaScript"undefined"vs"void 0"

undefined和 之间究竟有什么区别void 0

哪个是首选,为什么?

javascript undefined void

36
推荐指数
2
解决办法
6650
查看次数