标签: void

什么可能导致返回函数崩溃?C++

所以我已经调试这个错误几个小时了。我使用 Ogre3d 编写一个程序只是因为它不加载符号,所以它不允许我进行堆栈跟踪,这使得查找崩溃的位置变得更加困难。因此,在调用特定函数之前编写,我打印出“开始”,然后调用该函数,并在打印“停止”后立即写入。在整个函数中,我打印出字母 AF,其中 F 在函数返回之前打印(最后一个“}”上方一行)奇怪的是,当崩溃发生时,它是在打印“F”之后,但没有“停止” '。这是否意味着崩溃发生在某处?我唯一能想到的是在函数期间分配的一些内存的释放过程中出了问题。我从来没有发生过这样的事情,我会继续检查以确保我认为的地方出了问题。

c++ crash return function void

5
推荐指数
1
解决办法
9218
查看次数

JavaScript 中的 void、eval 和 Function 构造函数之间有什么区别?

void(document.body.innerText += 'hi')

eval(document.body.innerText +='\nbye')

Function(document.body.innerText += '\n!!!')

void(Function(function foo(){document.body.innerText += '\n>hi2'; return true}).toString())();

eval(Function(function foo(){document.body.innerText += '\nbye2'; return true}).toString())();

Function(Function(function foo(){document.body.innerText += '\n!!!2'; return true}).toString())();
Run Code Online (Sandbox Code Playgroud)

在这些不同的语句中执行代码的处理模型是什么?

void(alert('hi'))
undefined

eval(alert('hi'))
undefined

Function(alert('hi'))
function anonymous() {
  undefined
}

eval(Function(function foo(){return true}).toString())();
TypeError: undefined is not a function

void(Function(function foo(){return true}).toString())();
TypeError: string is not a function

Function(Function(function foo(){return true}).toString())();
undefined
Run Code Online (Sandbox Code Playgroud)

javascript eval void ecmascript-5 function-constructor

5
推荐指数
1
解决办法
1509
查看次数

将向量作为 void 指针传递给函数

我有一个回调函数,它接受 avoid *作为参数来传递参数,并且我想将向量传递给该函数。该函数将被多次调用,因此在回调过程完成后,我希望能够迭代所有已push_back()通过回调进行编辑的元素。

static void cb(void *data)
{
    vector<int> *p = static_cast<vector<int>*>(data); //Attempting to convert *void to vector<int>
    p->push_back(1);
}

int main()
{
    vector<int> a(10); //Max of 10 push_back()s? vector<int> a; gives memory error.
    cb((void*)&a.at(0));
    cout << a.at(0); //Gives a random number of 6 digits or higher
}
Run Code Online (Sandbox Code Playgroud)

a.at(0)问题是,在回调后调用时,它的值并不正确为“1” ,而只是一些随机数。

c++ pointers vector void

5
推荐指数
1
解决办法
9117
查看次数

如何为返回 void 和 void * 的函数编写 googletest 测试用例?

我正在尝试使用 googletest 测试返回 void 和 void* 的函数。我只是一个初学者,到目前为止我刚刚使用 EXPECT 来测试代码。

请让我知道如何编写 void 和 void * 函数的测试用例。

示例代码会有很大帮助。:)

谢谢

function googletest void

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

在 Powershell 中重定向到 $null 奇怪的行为

有四种方法可以抑制输出:

  1. 重定向到$null变量
    PS C:\> 1; $(2; return) > $null; 3
    1
    3
    
    Run Code Online (Sandbox Code Playgroud)
  2. 管道到Out-Nullcmdlet
    PS C:\> 1; $(2; return) | Out-Null; 3
    1
    2
    
    Run Code Online (Sandbox Code Playgroud)
  3. 投射到[void]类型
    PS C:\> 1; [void]$(2; return); 3
    1
    2
    
    Run Code Online (Sandbox Code Playgroud)
  4. 赋值给$null变量
    PS C:\> 1; $null = $(2; return); 3
    1
    2
    
    Run Code Online (Sandbox Code Playgroud)

预计所有四种情况都是等价的。

为什么重定向到$null行为不同?我遇到了错误吗?

一个额外的例子

此示例显示> $null了 PS 2.0中命令的意外行为:

PS C:\> 1; $(Write-Output 2; Write-Host 3; return; Write-Host 4) > $null; 5
1
3
5
Run Code Online (Sandbox Code Playgroud)

return命令就像从某个嵌套上下文中退出一样(尽管没有创建它的命令),停止 …

powershell null void powershell-2.0

5
推荐指数
1
解决办法
2391
查看次数

单元测试 - 如何测试仅插入日志消息的 `void` 方法 (Serilog)

我需要测试一个 type 的方法void,它只是使用 LOG 框架(Serilog)在我的 LOG 变量上插入一条消息。

见实现示例:

public class MyClass
{
    public MyClass(ILogger<IProcess> logger)
    {
        this.logger = logger;
    }

    private readonly ILogger logger;

    //...Anothers methods...

    public void LogInit(Guid processId, string folder, string[] args)
    {
        var myObject = new
        {
            ProcessId = processId,
            Folder = folder,
            Arguments = args
        };

        this.logger.LogWarning("{@myObject}", myObject);
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们需要为 LogInit (...)

这个方法真的需要测试吗?或者更确切地说,它的存在有意义吗?

我在读一些关于:

“如果你的方法没有副作用,也没有返回任何东西,那么它就没有做任何事情。”

在这种情况下,该方法只是“单独”创建以维护代码的组织并进一步分离类的职责。

那讲得通?

编辑: @PeterBons

我们无权访问在接口 ( logger) 中注册的消息,例如:this.logger.GiveMeWarningLogs()...

c# logging unit-testing void serilog

5
推荐指数
2
解决办法
2758
查看次数

为什么 TypeScript 可以通过箭头函数返回的不仅仅是显式的 void,但在执行相同操作的函数上会出错?

我找不到以下 TypeScript 片段中发生的情况的解释:

const f1: () => void = () => 4; // <- OK

function f2(): void {
  return 4; // <- Type 'number' is not assignable to type 'void'.
}
Run Code Online (Sandbox Code Playgroud)

游乐场链接

为什么 TypeScript 可以通过箭头函数返回比显式返回更多的函数void,但会抱怨声明的函数做同样的事情?

void typescript

5
推荐指数
0
解决办法
48
查看次数

强制转换为 void 以避免使用重载的用户定义逗号运算符

void我正在学习 C++ 中的模板,并遇到了一个使用强制转换的示例:

template<typename T>
auto func (T const& t) -> decltype( (void)(t.size()), T::size_type() )
{
return t.size();

}
Run Code Online (Sandbox Code Playgroud)

解释中写道:

将表达式强制转换为 void 是为了避免用户定义的逗号运算符针对表达式类型重载的可能性。

我的问题是:

  1. 如何使用强制转换为 void 来“避免用户定义的逗号运算符重载表达式类型的可能性”?我的意思是,任何人都可以举出任何例子,如果我们不使用void此代码会给出错误吗?例如,假设我们有一个名为 的类SomeClass,它重载了逗号运算符。现在,如果我们不使用,这会成为问题吗void?

  2. static_cast在这种情况下可以使用 C 风格的强制转换吗?例如,类似的东西static_cast<void>(t.size())。我正在阅读使用 C++17 功能的示例,因此我想知道为什么作者在这种情况下使用了 C 风格转换。

我读过强制转换为“void”到底有什么作用?,从中我得到的印象是,如果我们使用(void)xthen 这意味着抑制编译器警告,并且还意味着“忽略 x 的值”。但后来我无法理解表达式x和之间的区别(void)x。

c++ casting void c++11 c++17

5
推荐指数
1
解决办法
262
查看次数

MSVC:为什么“extern void x;” 是“非法使用类型'void'”吗?

为什么这段代码:

\n
extern void x;\n
Run Code Online (Sandbox Code Playgroud)\n

导致:

\n
$ cl t555.c /std:c11 /Za\nt555.c(1): error C2182: 'x': illegal use of type 'void'\n
Run Code Online (Sandbox Code Playgroud)\n

这里什么是非法的?

\n

UPD。使用案例:

\n
$ cat t555a.c t555.p.S\n#include <stdio.h>\n\nextern void x;\n\nint main(void)\n{\n    printf("%p\\n", &x);\n    return 0;\n}\n\n       .globl  x\nx:\n        .space 4\n\n$ gcc t555a.c -std=c11 -pedantic -Wall -Wextra -c && as t555.p.S -o t555.p.o && gcc t555a.o t555.p.o && ./a.exe\nt555a.c: In function \xe2\x80\x98main\xe2\x80\x99:\nt555a.c:7:20: warning: taking address of expression of type \xe2\x80\x98void\xe2\x80\x99\n    7 |     printf("%p\\n", &x);\n      |                    ^\n0x1004010c0\n\n$ clang t555a.c -std=c11 …
Run Code Online (Sandbox Code Playgroud)

c declaration void visual-c++ language-lawyer

5
推荐指数
1
解决办法
371
查看次数

在 Go 泛型(版本 1.18)或更高版本中使用“void”类型作为参数化类型

Go 在1.18 版本中引入了泛型。我刚刚下载了最新的测试版来测试这个主要的新功能。

考虑下面的代码:

package main

import "fmt"

func Demo1(n int) int {
    return n
}

func Demo2(n int) {
    fmt.Println(n)
}

func Call[T1, T2 any](fn func(T1) T2, param T1) {
    fn(param)
}

func main() {
    // Okay
    Call(Demo1, 1)
    // type func(n int) of Demo2 does not match
    // inferred type func(int) T2 for func(T1) T2
    Call(Demo2, 2)
}

Run Code Online (Sandbox Code Playgroud)

该函数Call接受一个函数fn作为参数,并使用参数 来调用它param。第一次调用Call很好,推断的类型适用int于T1和T2。然而,第二次调用未能编译。

我知道我总是可以编写一个适配器来包装 …

generics void go

5
推荐指数
1
解决办法
1094
查看次数