我想从ntdll.dll调用一些Nt函数,我就是这样做的.
对于调用:NtTestAlert(),您需要典型的ntcall内核例程,可通过int 2Eh访问.(从这里我得到了Nt函数http://undocumented.ntinternals.net/)
代码也未完成,我得到:
*错误C2664:'_ ntcall':无法将参数1从'int'转换为'MESS( _stdcall )'
#include <iostream>
#include <windows.h>
#include <Ntsecapi.h>
using namespace std;
typedef int(__stdcall MESS)(unsigned int);
void __ntcall(MESS *msg)
{
__asm
{
int 2Eh;
}
}
int main(void)
{
MESS *me = 0;
int result = 0;
HINSTANCE__ *hModule= LoadLibrary(L"C:\\Windows\\System32\\ntdll.dll");
if(hModule != 0)
{
me = (MESS*)GetProcAddress(hModule, "NtTestAlert");
if(me != 0)
{
unsigned int type = 1;
result = (__ntcall((*me)(type)));
}
else
{
cout << "Error Load function!" << endl;
}
FreeLibrary(hModule);
} …Run Code Online (Sandbox Code Playgroud) 当我们意识到这是问题时,我和我的朋友试图在我们的代码中找到一个错误.
random_function(spawn_link(fun() -> worker(List, self(), Death) end));
Run Code Online (Sandbox Code Playgroud)
这是解决方案:
PID = self(),
random_function(spawn_link(fun() -> worker(List, PID, Death) end));
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,为什么不能直接调用self()函数呢?是因为它是一个匿名函数还是某种特殊的Erlang?
我有一个大脚本,我想忽略一个函数调用,如果已经调用它.
我有一个标志,现在设定为确定这一点.但是,我怎么做这个,而不需要有一个标志或计数.
谢谢!
虽然过了让lambda我发生了
(defmacro! dlambda (&rest ds)
`(lambda (&rest ,g!args)
(case (car ,g!args)
,@(mapcar
(lambda (d)
`(,(if (eq t (car d))
t
(list (car d)))
(apply (lambda ,@(cdr d))
,(if (eq t (car d))
g!args
`(cdr ,g!args)))))
ds))))
Run Code Online (Sandbox Code Playgroud)
他们随后如此调用:
(setf (symbol-function 'count-test)
(let ((count 0))
(dlambda
(:inc () (incf count))
(:dec () (decf count)))))
Run Code Online (Sandbox Code Playgroud)
是否有像flet/labels/let这样的结构,我可以将结果闭包绑定到,以避免以全局方式使用funcall或setf符号函数?所以我可以这样做:
(with-closures ((counter (let ((count 0))
(dlambda
(:inc () (incf count))
(:dec () (decf count))))))
(counter :incf))
Run Code Online (Sandbox Code Playgroud) 我在努力记住在调用Haskell函数时如何使用括号.我来自C风格的背景,我习惯于f(comma, separated, args)调用函数的语法.显然这与(在Haskell中)相同,((((f) comma) separated) args)但这只是令人困惑.
为什么我需要所有这些括号?
我使用Python3来计算这个维基百科示例的概率质量函数(PMF):
我试着遵循这个scipy文档:
https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.stats.binom.html
文件清楚地说:
Notes
The probability mass function for binom is:
binom.pmf(k) = choose(n, k) * p**k * (1-p)**(n-k)
for k in {0, 1,..., n}.
binom takes n and p as shape parameters.
Run Code Online (Sandbox Code Playgroud)
好吧,我试图在考虑维基百科的例子的情况下实现这一点.这是我的代码:
from scipy.stats import binom
n = 6
p = 0.3
binom.pmf(k) = choose(n, k) * p**k * (1-p)**(n-k)
print (binom.pmf(1))
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误的消息:
File "binomial-oab.py", line 7
binom.pmf(k) = choose(n, k) * p**k * (1-p)**(n-k)
^
SyntaxError: can't assign to function call
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
当我尝试将数组发送到函数时,我得到一个错误.
这是我的minunit测试程序:
#include "minunit.h"
#include "calc.h"
#include <stdio.h>
int tests_run = 0;
static char * test_Repetitve() {
mu_assert("error in test_Repetitive, Repetitive != 7", HistogramArray({1,2,3,4,5,6,7})== 7);
return 0;
}
static char * all_tests() {
mu_run_test(test_Repetitive);
return 0;
}
int main(int argc, char **argv) {
char *result = all_tests();
if (result != 0) {
printf("%s\n", result);
}
else {
printf("ALL TESTS PASSED\n");
}
printf("Tests run: %d\n", tests_run);
return result != 0;
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是
mu_assert("error in test_Repetitive, Repetitive != 7", HistogramArray({1,2,3,4,5,6,7})== 7);
Run Code Online (Sandbox Code Playgroud)
它进入这个功能: …
刚刚遇到这个声明,并想知道为什么这个函数调用最初看起来像一个演员?
SomeClass bo = new SomeClass(); // blabla something like that to initialize the object variable
(bo).setValue(bo.getValue().negate());
Run Code Online (Sandbox Code Playgroud)
至于我还没有看到这种语法 - 与简单相比它做了什么
bo.setValue(bo.getValue().negate());
Run Code Online (Sandbox Code Playgroud)
?
我需要知道 Bash 是否有针对我的情况的解决方案。我需要在某些条件后进行“双重回报”。我的意思是,执行函数的返回并返回父函数以跳过该父函数的其余代码。
我知道我可以使用函数返回值进行条件操作来实现此目的。但我想知道 Bash 中是否存在类似“break 2”的函数。如果可能的话,我不想修改父函数的代码,因为正如你可以想象的,在我的真实脚本中有几十个函数,我不想修改所有函数。
例子:
#!/bin/bash
function sublevelone() {
echo "sublevelone"
# Return 2, or break 2 or something :D
}
function main() {
sublevelone
echo "This is the part of the code to being avoid executed"
}
main
Run Code Online (Sandbox Code Playgroud) 拿这个例子:
module Main where
main = print (reverseWords "lol")
reverseWords :: String -> [String]
reverseWords = words
Run Code Online (Sandbox Code Playgroud)
reverseWords函数不是针对任何参数的模式匹配,但函数运行和输出"[lol]"。
我在这里有两个问题:
Haskell 如何知道我是否正在words针对 的输入调用函数reverseWords?在这个语法中,看起来我只是在返回函数words。
为什么即使我没有在模式中提供任何输入参数,它也能成功运行reverseWords?
function-call ×10
function ×2
haskell ×2
syntax ×2
arrays ×1
bash ×1
c ×1
c++ ×1
closures ×1
common-lisp ×1
erlang ×1
java ×1
native ×1
nested ×1
ntdll ×1
parentheses ×1
powershell ×1
probability ×1
python-3.x ×1
scipy ×1
winapi ×1