小编cdl*_*ary的帖子

Bazel 选择特定 GCC 主要版本的条件

我们必须向使用 的规则传递一个特殊linkopts标志,特别是针对 Debian 10 (gcc 8.3) 附带的 GCC 版本。cc_library<filesystem>

我不想让开发人员通过一个--config=old_gcc或类似的顶级。

我希望像这样的咒语会起作用:

    linkopts = select({
       "@bazel_tools//tools/cpp:gcc": ["-lstdc++fs"],
       "//conditions:default": [],
    }),
Run Code Online (Sandbox Code Playgroud)

但是 a) gcc 不是select()可以使用的可配置属性b) 我们更具体地说应该测试版本号是 8(我们只支持 8 或更高版本)。

如何提取一个类似is_gcc8的 config_setting 我可以像这样为使用的目标选择<filesystem>?蒂亚!

bazel

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

为什么shared_ptr有一个显式的构造函数

我想知道为什么shared_ptr没有隐式构造函数.这里没有提到的事实:为此获取boost :: shared_ptr

(我想出了原因,但认为无论如何发布都是一个有趣的问题.)

#include <boost/shared_ptr.hpp>
#include <iostream>

using namespace boost;
using namespace std;

void fun(shared_ptr<int> ptr) {
    cout << *ptr << endl;
}

int main() {
    int foo = 5;
    fun(&foo);
    return 0;
}

/* shared_ptr_test.cpp: In function `int main()':
 * shared_ptr_test.cpp:13: conversion from `int*' to non-scalar type `
 *  boost::shared_ptr<int>' requested */
Run Code Online (Sandbox Code Playgroud)

c++ boost refcounting

4
推荐指数
2
解决办法
3043
查看次数

SQLite C/C++ API unsigned char*

为什么SQLite C/C++ API返回unsigned char *文本值而不是更实际的char *类型?

这与unsigned char问题有些相关,除了SQLite API的决定似乎与char *字符串式值的传统建议相反.

例如:

const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
Run Code Online (Sandbox Code Playgroud)

c c++ sqlite api char

4
推荐指数
2
解决办法
2224
查看次数

如何在Perl中迭代/取消引用子例程引用数组?

我试图弄清楚如何迭代子程序refs数组.

这个语法出了什么问题?

use strict;
use warnings;

sub yell { print "Ahh!\n"; }
sub kick { print "Boot!\n"; }
sub scream { print "Eeek!\n"; }

my @routines = (\&yell, \&kick, \&scream);
foreach my $routine_ref (@routines) {
  my &routine = &{$routine_ref};
  &routine;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

perl iterator function

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

如何以编程方式报告类的API?

我的目标是解析一个类并返回一个数据结构(对象,字典等),它描述了类中包含的方法和相关参数.类型和回报的奖励积分......

要求:必须是Python

例如,以下类:

class Foo:
    def bar(hello=None):
         return hello

    def baz(world=None):
         return baz
Run Code Online (Sandbox Code Playgroud)

将被解析返回

result = {class:"Foo", 
          methods: [{name: "bar", params:["hello"]}, 
                    {name: "baz", params:["world"]}]}
Run Code Online (Sandbox Code Playgroud)

所以这只是我正在思考的一个例子......我对数据结构非常灵活.

关于如何实现这一点的任何想法/例子?

python api

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

是否有使用C++编译器进行C编译的结论性研究/实验?

我已经看到很多关于使用C++编译器编译的C代码的一般性能的争论 - 我很好奇是否有任何可靠的实验研究隐藏在你在网络搜索中发现的所有轶事的火焰战争之下.我对GCC套件特别感兴趣,但任何数据点都会很有趣.(比较"Hello,World!"的集合并不像我想的那样强大.:-)

我通常假设你使用"嵌入式"标志 - 没有例外或RTTI.我也不介意知道是否有关于编译时间本身的研究.TIA!

c c++ compiler-construction embedded performance

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

对于Python程序员来说,什么是一个好的中/大项目?

就像标题一样.我已经学习了一段时间的Python,我会说我很不错.我正在寻找一个中型或大型项目来让我忙碌一段时间.非常感谢您的建议.

python

3
推荐指数
3
解决办法
3140
查看次数

Perl monkey-patching是否允许您查看修补程序包的范围?

我正在使用"如何在Perl中修补实例方法?"的开头给出的技术修补程序包..我遇到的问题是原始子例程使用了一个包级my变量,修补后的子例程似乎无法通过完整路径规范或隐式使用来访问.

有没有办法以这种方式获取用于修补子例程的数据范围?

perl scope monkeypatching packages

3
推荐指数
2
解决办法
500
查看次数

惯用Python has_one

我刚刚发明了一个愚蠢的小助手功能:

def has_one(seq, predicate=bool):
    """Return whether there is exactly one item in `seq` that matches
    `predicate`, with a minimum of evaluation (short-circuit).
    """
    iterator = (item for item in seq if predicate(item))
    try:
        iterator.next()
    except StopIteration: # No items match predicate.
        return False
    try:
        iterator.next()
    except StopIteration: # Exactly one item matches predicate.
        return True
    return False # More than one item matches the predicate.
Run Code Online (Sandbox Code Playgroud)

因为我能想到的最可读/惯用的内联事物是:

[predicate(item) for item in seq].count(True) == 1
Run Code Online (Sandbox Code Playgroud)

...在我的情况下这很好,因为我知道seq很小,但它只是感觉很奇怪.有没有我在这里忘记的成语,这使我不得不打破这个助手?

澄清

回顾它,这是一个令人讨厌的问题,虽然我们得到了一些很好的答案!我正在寻找:

  • 一个明显的,可读的内联习语或stdlib函数,在这种情况下,急切的评估是可以接受的.
  • 一个更明显和可读的辅助函数 - …

python idioms

3
推荐指数
1
解决办法
528
查看次数

从命令行启动emacs-gdb?

我喜欢emacs的gdb模式比GDB的命令行或TUI模式好很多,但是有些程序需要一个"调试器命令行"程序,它可以在它设置的环境中运行.

我想知道是否有一种简单的方法可以使用gdb命令行替换gdb模式下弹出emacs.

提前致谢.

emacs shell gdb

3
推荐指数
1
解决办法
2195
查看次数