所以我已经调试这个错误几个小时了。我使用 Ogre3d 编写一个程序只是因为它不加载符号,所以它不允许我进行堆栈跟踪,这使得查找崩溃的位置变得更加困难。因此,在调用特定函数之前编写,我打印出“开始”,然后调用该函数,并在打印“停止”后立即写入。在整个函数中,我打印出字母 AF,其中 F 在函数返回之前打印(最后一个“}”上方一行)奇怪的是,当崩溃发生时,它是在打印“F”之后,但没有“停止” '。这是否意味着崩溃发生在某处?我唯一能想到的是在函数期间分配的一些内存的释放过程中出了问题。我从来没有发生过这样的事情,我会继续检查以确保我认为的地方出了问题。
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) 我有一个回调函数,它接受 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” ,而只是一些随机数。
我正在尝试使用 googletest 测试返回 void 和 void* 的函数。我只是一个初学者,到目前为止我刚刚使用 EXPECT 来测试代码。
请让我知道如何编写 void 和 void * 函数的测试用例。
示例代码会有很大帮助。:)
谢谢
有四种方法可以抑制输出:
$null变量
PS C:\> 1; $(2; return) > $null; 3
1
3
Run Code Online (Sandbox Code Playgroud)Out-Nullcmdlet
PS C:\> 1; $(2; return) | Out-Null; 3
1
2
Run Code Online (Sandbox Code Playgroud)[void]类型
PS C:\> 1; [void]$(2; return); 3
1
2
Run Code Online (Sandbox Code Playgroud)$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命令就像从某个嵌套上下文中退出一样(尽管没有创建它的命令),停止 …
我需要测试一个 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()...
我找不到以下 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我正在学习 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 是为了避免用户定义的逗号运算符针对表达式类型重载的可能性。
我的问题是:
如何使用强制转换为 void 来“避免用户定义的逗号运算符重载表达式类型的可能性”?我的意思是,任何人都可以举出任何例子,如果我们不使用void此代码会给出错误吗?例如,假设我们有一个名为 的类SomeClass,它重载了逗号运算符。现在,如果我们不使用,这会成为问题吗void?
static_cast在这种情况下可以使用 C 风格的强制转换吗?例如,类似的东西static_cast<void>(t.size())。我正在阅读使用 C++17 功能的示例,因此我想知道为什么作者在这种情况下使用了 C 风格转换。
我读过强制转换为“void”到底有什么作用?,从中我得到的印象是,如果我们使用(void)xthen 这意味着抑制编译器警告,并且还意味着“忽略 x 的值”。但后来我无法理解表达式x和之间的区别(void)x。
为什么这段代码:
\nextern void x;\nRun Code Online (Sandbox Code Playgroud)\n导致:
\n$ cl t555.c /std:c11 /Za\nt555.c(1): error C2182: 'x': illegal use of type 'void'\nRun Code Online (Sandbox Code Playgroud)\n这里什么是非法的?
\nUPD。使用案例:
\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) 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。然而,第二次调用未能编译。
我知道我总是可以编写一个适配器来包装 …
void ×10
c++ ×3
function ×2
c ×1
c# ×1
c++11 ×1
c++17 ×1
casting ×1
crash ×1
declaration ×1
ecmascript-5 ×1
eval ×1
generics ×1
go ×1
googletest ×1
javascript ×1
logging ×1
null ×1
pointers ×1
powershell ×1
return ×1
serilog ×1
typescript ×1
unit-testing ×1
vector ×1
visual-c++ ×1