小编gvl*_*gvl的帖子

Git:显示目录中每个文件的最后提交日期和消息,如Github

在Github中,当使用Web界面浏览目录时,除了提交消息之外,还可以看到上次提交每个文件和子目录的时间.

你会如何使用git命令行界面做同样的事情?

git github

11
推荐指数
1
解决办法
4612
查看次数

调用具有通用基类的并集成员的虚拟函数作为另一个成员是未定义行为吗?

具体来说,我希望能够在嵌入式上下文中使用多态而不分配堆(因此无需动态分配)。在这里,我的担心似乎是,base尽管在成员中x或在成员中y处于“活动”状态时访问成员似乎是类型绑定的实例,即使它们共享相同的初始标头(和vtable结构)。下面的代码是否被视为定义的行为?

#include <iostream>
#include <new>

using namespace std;

struct Base {
    virtual const char *foo() { return "base"; }
};

struct X: public Base {
    const char *foo() override { return "d1"; }
};

struct Y: public Base {
    const char *foo() override { return "d2"; }
};

union DerivedAny {
    DerivedAny() {}
    Base& get() { return *launder(&b); }
    Base b = {};
    X x;
    Y y;
};

DerivedAny objs[3];

int main() {
    new …
Run Code Online (Sandbox Code Playgroud)

c++ unions type-punning

6
推荐指数
0
解决办法
93
查看次数

输入一个闭包,该闭包返回从其输入之一借用的匿名类型,而无需堆分配或特征对象

假设我有以下工作代码:

use std::collections::VecDeque;

fn modify<S, F>(state: &mut S, func: F)
where
    F: for<'a> Fn(&'a mut S) -> Box<dyn Iterator<Item = &mut u64> + 'a>
{
    let mut prev = 1;
    for _ in 0..3 {
        for item in func(state) {
            let val = *item;
            *item = val * prev;
            prev = val;
        }
    }
}

fn main() {
    let mut state: VecDeque<u64> = vec![1,2,3,4].into();

    modify(&mut state, |s| Box::new(s.iter_mut()));
    assert_eq!(state, [48, 8, 24, 864]);

    modify(&mut state, |s| Box::new(s.iter_mut().take(2)));
    assert_eq!(state, [147456, 7077888, …
Run Code Online (Sandbox Code Playgroud)

lifetime rust

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

获取"sh -e"中的返回值

我正在编写一个shell脚本#!/bin/sh作为第一行,以便脚本在第一个错误时退出.文件中有几行是以这种形式command || true存在的,如果命令失败,脚本就不会在那里退出.但是,我仍然想知道命令的退出代码.如何在不必使用set +e暂时禁用该行为的情况下获取退出代码?

shell sh

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

ELF程序标题:MemSiz与FileSiz

readelf -l /bin/bash 给我这个:

程序标题:
  类型偏移VirtAddr PhysAddr
                 FileSiz MemSiz标志对齐
  PHDR 0x0000000000000040 0x0000000000400040 0x0000000000400040
                 0x00000000000001f8 0x00000000000001f8 RE 8
  INTERP 0x0000000000000238 0x0000000000400238 0x0000000000400238
                 0x000000000000001a 0x000000000000001a R 1
      [请求程序解释器:/lib/ld-linux-x86-64.so.2]
  加载0x0000000000000000 0x0000000000400000 0x0000000000400000
                 0x00000000000aeef4 0x00000000000aeef4稀土200000
  加载0x00000000000afde0 0x00000000006afde0 0x00000000006afde0
                 0x0000000000003cec 0x000000000000d3c8   读写200000
  动态0x00000000000afdf8 0x00000000006afdf8 0x00000000006afdf8
                 0x0000000000000200 0x0000000000000200读写8
  注意0x0000000000000254 0x0000000000400254 0x0000000000400254
                 0x0000000000000044 0x0000000000000044 R 4
  GNU_EH_FRAME 0x000000000009dbc0 0x000000000049dbc0 0x000000000049dbc0
                 0x0000000000002bb4 0x0000000000002bb4 R 4
  GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x0000000000000000 0x0000000000000000读写8
  GNU_RELRO 0x00000000000afde0 0x00000000006afde0 0x00000000006afde0
                 0x0000000000000220 0x0000000000000220 R 1

为什么在某些细分市场中MemSiz不等于?包含但不包含的存储区应该怎么办?FileSizLOADMemSizFileSiz

linux elf memory-alignment readelf

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

Javascript数组长度行为

我们arr = [1,2,3,4].如果我arr[x]在哪里x >= arr.length,arr.length成为x + 1.

这种情况发生在Firefox和Chrome上.我有两个问题:

  1. 这是定义的行为吗?(欢迎来源)
  2. 这是推荐吗?

谢谢!

javascript

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

标签 统计

c++ ×1

elf ×1

git ×1

github ×1

javascript ×1

lifetime ×1

linux ×1

memory-alignment ×1

readelf ×1

rust ×1

sh ×1

shell ×1

type-punning ×1

unions ×1