Haxe有trace(),可用于所有目标打印内容.
trace("aa"); // Main.hx:89: aa
Run Code Online (Sandbox Code Playgroud)
如何打印内容,没有文件名和行号?
我试图编译下面的代码(来自/sf/answers/33527231/).编译运行正常,如果我编译
$ g++ test.cpp
Run Code Online (Sandbox Code Playgroud)
但在使用-std=c++11开关时出错了:
$ g++ -std=c++11 test.cpp
test.cpp: In function 'std::string exec(char*)':
test.cpp:6:32: error: 'popen' was not declared in this scope
FILE* pipe = popen(cmd, "r");
^
Run Code Online (Sandbox Code Playgroud)
知道发生了什么事吗?
(我在mingw.org和WindowsXP64上使用mingw32 gcc4.8.1)
码:
#include <string>
#include <iostream>
#include <stdio.h>
std::string exec(char* cmd) {
FILE* pipe = popen(cmd, "r");
if (!pipe) return "ERROR";
char buffer[128];
std::string result = "";
while(!feof(pipe)) {
if(fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
pclose(pipe);
return result;
}
int main() {}
Run Code Online (Sandbox Code Playgroud) 我试图获得一些反应香蕉的经验,根据它的网站,它应该支持GTK.我想知道是否有任何教程/介绍材料如何做到这一点?
我在这里读到有一个jaek项目,但是我更喜欢使用带有gtk2hs(来自hackage的gtk3)的反应性香蕉的最小例子,因为我之前没有FRP或反应香蕉的经验.
此外,我多次尝试在Windows/MinGW上使用reactive-banana-wx.尽管我最终能够安装wxHaskell,但预先存在运行时错误(/sf/ask/1635756531/).我想我无法让wxHaskell正常工作,除非我将所有内容降级到2010或更早,因为之后没有关于如何在Windows上使wxHaskell工作的指令,只有问题.
我今天尝试安装Gtk2Hs.即使使用gtk3,也是一件轻而易举的事.这让我想知道这条路线上是否有适合初学者的好材料(即反应性香蕉+ gtk2Hs).
谢谢,
python是否有一个像consOCaml(::)(或lisp)中的列表构造函数,它接受一个head元素和tail列表,并返回一个新列表head::tail?
我搜索了python list构造函数,最后找到了其他的东西__init__.参见例如在Python中创建一个列表 - 偷偷摸摸的东西?
为了澄清,我正在寻找的是与此问题中的Python中的以下列表分解相反:
head, *tail = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
Run Code Online (Sandbox Code Playgroud)
这给出了:
>>>head
1
>>> tail
[1, 2, 3, 5, 8, 13, 21, 34, 55]
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个列表构造函数,例如cons或者::这样
head :: tail => original list
Run Code Online (Sandbox Code Playgroud) 我试图建立GDAL-1.10.0(http://trac.osgeo.org/gdal/wiki/DownloadSource)使用mingw64(从 http://sourceforge.net/projects/mingwbuilds/files/host-windows/ 64 -4.8.0释放小POSIX的SEH-rev2.7z).我已经在标准的MinGW(32位)版本下编译了gdal-1.10.0而没有任何问题.
我必须切换到mingw64的原因是标准的32位MinGW发行版不支持c ++ 11功能std::thread,以及(我怀疑)其他功能.但是我最终得到一个链接错误,告诉我一些事情
undefined reference to '__imp_GetACP'
Run Code Online (Sandbox Code Playgroud)
(如果我使用mingw64/mingw-builds中的32位变体,则使用不同的装饰名称).顺便说一句,我尝试了不同版本的mingw64,包括64位,32位,seh,sjlj,但都给出了同样的错误GetACP().
我做了一些功课,找到了类似编译任务的一些说明:http: //www.gaia-gis.it/spatialite-3.0.0-BETA/mingw64_how_to.html#env 根据上面的网站,似乎他们建议问题与WOW64有关,并且无法使用正确版本的Windows DLL文件,因为Windows会自动为您确定,具体取决于32位或64位应用程序是否进行调用.这对于mingw64来说应该是一个问题,因为编译器gcc是64位但是msys绝对是32位.
但是,由于我也尝试了32位版本,上面似乎并没有解释错误.更重要的是,我试着用一种肮脏的方式来评论所有的调用GetACP(),因为我并不真正关心代码页面以及所有这些用于我的目的.奇怪的是,编译是可以的(在一个新的来源上只是被GetACP()注释掉了),但仍然报告了相同的链接错误.我检查了一下libkernel32.a,libiconv.a在lib文件夹中,并按照上面博客中的说明将dll复制出来
c:\windows\system32并将它们放在mingw子文件夹中并进行适当的重命名.链接错误仍然存在.这是我花了差不多两天没有成功就停止了黑客攻击的地方.我无法理解为什么整个源代码不包含对函数的单个调用,我仍然会收到链接错误.
谁能解释一下gdal和mingw64之间可能导致这个问题的原因,以及如何解决这个问题?
另外,关于mingw64的一般问题是它是否真的能够支持posix函数?我看到包名如x64-4.8.0-release-posix-seh-rev2.7z,但我记得MinGW的人说他们永远不会支持完整的posix.
PS我正在64位Windows Server 2008 R2上测试它.
更新:在MinGW64(mingw-builds)下构建gdal-1.10.0的完整步骤是:
$./configure
Run Code Online (Sandbox Code Playgroud)
然后,编辑GDALmake.opt,查找GDAL_ROOT并用dos/mingw格式替换cygwin驱动器格式,例如更改:
GDAL_ROOT = /d/temp/build/gdal-1.10.0
Run Code Online (Sandbox Code Playgroud)
至
GDAL_ROOT = d:/temp/build/gdal-1.10.0
Run Code Online (Sandbox Code Playgroud)
更换
CONFIG_LIBS = $(GDAL_ROOT)/$(LIBGDAL)
Run Code Online (Sandbox Code Playgroud)
同
CONFIG_LIBS = $(GDAL_ROOT)/$(LIBGDAL) -liconv
Run Code Online (Sandbox Code Playgroud)
最后,
$ make && make install && cp apps/*.exe /usr/local/bin/
Run Code Online (Sandbox Code Playgroud) C++ 11同时具有lambda和std :: function <>,但不幸的是,它们有不同的类型.一个结果是,人们无法直接在高阶函数中使用lambda,例如lisp中的map.例如,在以下代码中
#include <vector>
#include <functional>
using namespace std;
template <typename A,typename B>
vector<B> map(std::function<B (A)> f, vector<A> arr) {
vector<B> res;
for (int i=0;i<arr.size();i++) res.push_back(f(arr[i]));
return res;
}
int main () {
vector<int> a = {1,2,3};
map([](int x) -> int { return x;},a); //not OK
auto id_l = [](int x) -> int { return x;};
map(id_l,a); //not OK;
function<int (int)> id_f = id_l;
map(id_f,a); //OK
return 0;
}
Run Code Online (Sandbox Code Playgroud)
,直接使用lambda作为main()的第2行将无法正常工作.g++ -std=c++11 testfunc.cpp返回`... testfunc.cpp:14:37:注意:'main():: __ lambda0'不是从'std …
我正在试验对Linux上用C编写的程序的控制流劫持攻击.我正在尝试对启用了No-eXecutable-stack对策的程序执行简单的ret-2-libc攻击.为此,我将返回system()带参数的函数/bin/sh.
但是我遇到了一个问题:虽然我的攻击有效并且shell成功生成,但是在进入第一个角色后shell立即退出!也就是说,按下任意键后shell关闭!
在这个简单的C代码中也可以观察到这种行为:
int main() { system("/bin/sh"); return 0; }
Run Code Online (Sandbox Code Playgroud)
我用它编译它: gcc code.c -o system
为什么是这样?我该如何解决?
我在尝试Ubuntu-9.04使用kernel 2.6.28和glibc-2.9-1
更新:当且仅当我按下的第一个键时,shell才会变为交互式Enter.也就是说,如果我输入的第一个字符是a new-line(\n),那么shell将保持打开状态并变为交互式.
所以有人能解释这里发生了什么吗?
我只是想知道如何为实数定义"小于"关系.
我理解,对于自然数(nat),<可以用一个数字作为另一个数字的(1+)后继者递归地定义S.我听说很多关于实数的事情在Coq中是公理化的而且没有计算.
但我想知道Coq中的实数是否存在最小公理集,基于哪些属性/关系可以导出.(例如 Coq.Reals.RIneq让它Rplus_0_r : forall r, r + 0 = r.成为公理,等等)
特别是,我很感兴趣,是否如关系<或<=可以在平等关系的顶部进行定义.例如,我可以想象在常规数学中,给出两个数字r1 r2:
r1 < r2 <=> exists s, s > 0 /\ r1 + s = r2.
Run Code Online (Sandbox Code Playgroud)
但这是否符合Coq的建设性逻辑?我是否可以用它来至少对不平等做一些推理(而不是一直重写公理)?
假设我有一些重叠的图层,每个图层都有一个点击事件.当我点击地图时,我想知道点击了哪些图层,尽管点击事件在第一层之后停止并且不会传播到其底层.我怎样才能做到这一点?
这是一个示例小提琴及其代码:https://jsfiddle.net/r0r0xLoc/
<div id="mapid" style="width: 600px; height: 400px;"></div>
<script>
var mymap = L.map('mapid').setView([51.505, -0.09], 13);
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
maxZoom: 18,
attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, ' +
'<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
'Imagery © <a href="http://mapbox.com">Mapbox</a>',
id: 'mapbox.streets'
}).addTo(mymap);
L.polygon([
[51.509, -0.08],
[51.503, -0.06],
[51.51, -0.047]
]).addTo(mymap).on('click', function() {
console.log('clicked on 1st polygon')
});
L.polygon([
[51.609, -0.1],
[51.503, -0.06],
[51.51, -0.047]
]).addTo(mymap).on('click', function() {
console.log('clicked on 2nd polygon')
});
</script>
Run Code Online (Sandbox Code Playgroud)
如果单击每个多边形,则会看到其相关消息.如果单击重叠部分,则只能看到第二个多边形的消息.
我想知道在提交的两行JavaScript代码之间保留了哪些状态babel-node.我的困惑是因为如果你编写两行代码,你可以覆盖变量定义而不会出错.例如,babel-node --presets es2015您可以这样做:
> const a = 1;
undefined
> let a = 2;
undefined
Run Code Online (Sandbox Code Playgroud)
现在,如果你在一行中写它,你会收到一个错误:
> const a = 1; let a = 2;
TypeError: repl: Duplicate declaration "a"
...
Run Code Online (Sandbox Code Playgroud)
似乎在第一种情况下,a定义为1(const变量赋值)的状态丢失(但直到第二次赋值),而在第二种情况下,它被维护.
是什么导致这里的差异?以及维护哪些州?