小编Dem*_*emi的帖子

如何在D中的@safe函数中执行I/O操作?

我正在学习D编程语言,我试图将自己限制在尽可能的SafeD子集中.但是,我注意到像writeln这样的I/O函数都是@system.如何在SafeD中进行I/O操作?

我在Fedora 19 x86-64上使用LDC2(从Fedora包下载).

d

8
推荐指数
2
解决办法
331
查看次数

将uint32_t转换为int32_t,不会有溢出或过度复杂的风险

我怎样才能最好地转换uint32_tint32_t快速地与包装,在C++?

一些尝试:

uint32_t y = UINT32_MAX;
int32_t x = (int32_t)y; // UB on overflow
int32_t x = *(int32_t*)&y; // does this violate strict aliasing?
Run Code Online (Sandbox Code Playgroud)

c++ undefined-behavior

8
推荐指数
2
解决办法
3528
查看次数

如何在lambda中捕获智能指针?

捕获lambda中智能指针的最佳方法是什么?我的一次尝试导致了一个免费使用后的bug.

示例代码:

#include <cstring>
#include <functional>
#include <memory>
#include <iostream>

std::function<const char *(const char *)> test(const char *input);

int main()
{
  std::cout.sync_with_stdio(false);
  std::function<const char *(const char *)> a = test("I love you");
  const char *c;
  while ((c = a(" "))){
    std::cout << c << std::endl;
  }
  return 0;
}
std::function<const char *(const char *)> test(const char *input)
{
  char* stored = strdup(input);
  char *tmpstorage = nullptr;
  std::shared_ptr<char> pointer = std::shared_ptr<char>(stored, free);
  return [=](const char * delim) mutable -> const char …
Run Code Online (Sandbox Code Playgroud)

c++ lambda smart-pointers

7
推荐指数
1
解决办法
6043
查看次数

使用系统; 在C#vs中使用namespace std; 在C++中

为什么using namespace std;在C++ 中被认为是不好的做法,但using System;在C#中被认为是不错的做法?它们似乎是类似的(将标准库填充到全局命名空间中).

c# c++

7
推荐指数
2
解决办法
3621
查看次数

如何将QT GUI加入非C++主程序?

QT似乎是最好的跨平台GUI工具包.不幸的是,它是在C++中,并且它与许多有趣的语言(如*nix上的D,Rust,Julia和Mono)的绑定要么不可用,要么不维护.GTK绑定通常是可用的,但GTK在Windows和(特别是)OS X上看起来很丑陋.wxWidgets绑定也很好,但是不可用或者没有为D,Rust和Julia维护(对于Julia,我可以通过Python获取两个工具包,但这是缓慢和笨拙的).

如何将C++ GUI绑定到非C++主程序?

c++ mono user-interface qt rust

7
推荐指数
1
解决办法
1537
查看次数

每个PUSH指令是否在x64上推送8个字节的倍数?

在x64上,每个PUSH指令是否会推送8个字节的倍数?如果没有,它会推动多少?

此外,每个函数参数消耗多少堆栈空间?

assembly x86-64 calling-convention

7
推荐指数
2
解决办法
3104
查看次数

内核恐慌中"不同步"是什么意思?

内核恐慌消息中的"不同步"是什么意思?

我已经读过,这意味着内核成功地将数据同步到磁盘,但我不确定.

典型的上下文是:"内核恐慌 - 不同步 - 试图杀死init!"

linux kernel panic

6
推荐指数
1
解决办法
7783
查看次数

解析表达式语法是否适合解析shell命令语言?

POSIX shell命令语言不易解析,主要是因为lexing和解析之间的紧密耦合.

但是,解析表达式语法(PEG)通常是无扫描的.通过结合lexing和解析,我似乎可以避免这些问题.我正在使用的语言(Rust)有一个维护良好的PEG库.但是,我知道有三个困难可能使得使用这个库变得不切实际:

  • shell必须能够逐行解析,而不是读取超过行尾的字符.
  • 别名纯粹是词法,并且在某些情况下可以使令牌被任何其他令牌序列替换
  • Shell保留字仅在某些情况下被识别

PEG是否适合在给定这些要求的情况下解析shell命令语言,或者是一个手写的递归下降解析器更适合?

shell parsing peg parser-generator rust

6
推荐指数
1
解决办法
507
查看次数

AArch64是否支持未对齐访问?

AArch64本身是否支持未对齐访问?我问,因为目前ocamlopt假设"不".

alignment arm64

6
推荐指数
1
解决办法
2930
查看次数

编写使用类的两个实现之一编译的Java代码

我正在用Java编写一些FFI代码,这些代码大量使用sun.misc.Unsafe.

在Java 9中,这个类将变得不可访问,并且将成为jdk.unsupported.Unsafe.我想编写我的代码,以便它现在可以工作,但继续在Java 9中工作.

最黑客的方法是什么?我更喜欢二进制兼容性,但源兼容性也没关系.

编辑:每次Unsafe调用方法时,我100%不能使用反射 - 甚至是虚拟调度.大多数这些方法都编译为单个机器指令.因此,性能真的很重要.拥有包装器是可以的 - 但只有当我确定JIT每次都会内联它们时才会这样.

我目前的计划是在运行时加载适当的类.

java ffi binary-compatibility source-compatibility

6
推荐指数
1
解决办法
157
查看次数