小编Ben*_*nno的帖子

是否可以在Lua中模拟绑定?

给定带有一个参数的lua函数,是否可以将此参数绑定到固定值以获取不带参数的函数?

更一般地说,如何将lua函数的某些输入参数绑定到某些值?

lua

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

如何从clang AST节点打印源位置

我正在松散地关注http://clang.llvm.org/docs/LibASTMatchersTutorial.html上的教程.我设法创建一个匹配类定义的AST匹配器,我的MatchFinder看起来像这样

class ClassDeclPrinter : public MatchFinder::MatchCallback
{
public:
  virtual void run(const MatchFinder::MatchResult &result) override
  {
    if (clang::NamedDecl const* nd = result.Nodes.getNodeAs<clang::NamedDecl>("id"))
    {
      nd->dump();
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

如果我在匹配的节点上调用dump(),则输出已包含其文件和源位置:

CXXRecordDecl 0x10dd250 </home/name/llvm-dev/build/../../cpp/classes.cpp:4:1, line:6:1> class B definition
Run Code Online (Sandbox Code Playgroud)

但是,当我调用getLocation()时,我只获得一个SourceLocation对象,其print()和dump()函数需要一个SourceManager实例才能工作.我不知道如何获取此SourceManager,或者是否有另一种方法来获取可打印的源位置.

c++ clang abstract-syntax-tree

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

为clang工具启用RTTI?

我正在尝试使用clang的libTooling来构建一个基本的源到源转换工具.

我想使用boost::regexboost::filesystem,但链接它们需要异常并启用RTTI.根据clang邮件列表,应该可以启用RTTI而不会破坏任何内容.

也就是说,我找不到设置或变量来指示构建系统启用RTTI.(我正在使用cmake).我可以添加-frtti-fexceptions标志编译器指令,但铛编译系统加入了自己-fno-rtti,-fno-exceptions标志这似乎具有更高的优先级.

c++ clang

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

目录中是否有等效的O_TMPFILE?

理想情况下,我希望有一个在文件系统中不可见的目录,并且当它的最后一个打开文件描述符关闭时将自动删除.它的内容将只能通过访问openat(),fstatat()等等.

对于常规文件,通过提供O_TMPFILE标志来实现此行为open().但是,mkdir()没有flags参数.

假设我有最新的Linux内核,这可能吗?

c linux posix

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

这个Clojure计划有什么问题?

我最近开始阅读Paul Grahams的'On Lisp',并学习学习clojure,所以这里可能有一些非常明显的错误,但是我看不到它:(显然是一个项目的euler问题)

(ns net.projecteuler.problem31)

(def paths (ref #{}))

; apply fun to all elements of coll for which pred-fun returns true
(defn apply-if [pred-fun fun coll]
  (apply fun (filter pred-fun coll)))

(defn make-combination-counter [coin-values]
  (fn recurse
    ([sum] (recurse sum 0 '()))
    ([max-sum current-sum coin-path]
      (if (= max-sum current-sum)
          ; if we've recursed to the bottom, add current path to paths
          (dosync (ref-set paths (conj @paths (sort coin-path))))
          ; else go on recursing
          (apply-if (fn [x] (<= (+ current-sum x) …
Run Code Online (Sandbox Code Playgroud)

clojure

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

如何在有限域中实现乘法?

如果 F := GF(p^n) 是具有 p^n 个元素的有限域,其中 p 是素数和 na 个自然数,是否有任何有效的算法来计算 F 中两个元素的乘积?

到目前为止,这是我的想法:

我知道 F 的标准构造是在 GF(p) 中取 n 次不可约多项式 f,然后将 F 的元素视为商 GF(p)[X]/(f) 中的多项式,我有感觉这可能已经是正确的方法,因为多项式乘法和加法应该很容易实现,但我不知何故看不到这实际上是如何完成的。例如,如何选择合适的 f,以及如何获得任意多项式的等价类?

math algebra

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

是否可以从gcc或clang获取Lexer输出?

是否可以让clang或gcc显示词法化阶段的结果?

c c++ gcc clang

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

constexpr结构是否被初始化为零?

请考虑以下示例:

template<int N>
struct foo {
    constexpr foo() : a() {}
    int a[N];
};

int main() {
    foo< (foo<1>{}).a[0] > f;
}
Run Code Online (Sandbox Code Playgroud)

当尝试编译它时,clang推断foo<0>fwhile 类型g++与内部编译器错误崩溃.

但是,是a的-member foo<1>为零保障,或者这是未定义/未指定的行为?

c++ c++11

4
推荐指数
1
解决办法
128
查看次数

Whats a/the "bluebook" in the context of network programming?

My local header /usr/include/linux/if_ether.h has the following define:

#define ETH_P_IPV6     0x86DD /* IPv6 over bluebook */
Run Code Online (Sandbox Code Playgroud)

What is bluebook? I've never heard this term, and a cursory internet search didn't reveal anything related to network programming.

network-programming ethernet ipv6 linux-kernel

4
推荐指数
1
解决办法
711
查看次数

是否需要定义所有前向声明?

一般来说,我想知道像这样的程序(包含从未定义的类的前向声明)在技术上是否格式良好?

class X;
int main() {}
Run Code Online (Sandbox Code Playgroud)

更具体地说,我想知道是否有这样的模式

// lib.h
#pragma once

struct X {
private:
  friend class F;
};
Run Code Online (Sandbox Code Playgroud)

lib.h如果属于不包含该类定义的共享库,则可以安全地编写F,也不依赖于另一个包含该类定义的共享库。

使用头文件的人是否有可能最终引用了F可能在加载共享库时导致链接器错误的符号?

c++ friend forward-declaration

4
推荐指数
1
解决办法
138
查看次数