小编Pra*_*tic的帖子

预处理器输出的数字指令是什么?

如果我使用带-E标志的gcc,clang或icc来运行预处理器,我会在输出中得到如下所示的行:

# 1 "test1.cpp"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 175 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "test1.cpp" 2
Run Code Online (Sandbox Code Playgroud)

这些是什么?它们以#符号开头,就好像它们是预处理程序指令一样,但这是预处理器的输出.

c c++ c-preprocessor

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

暂时“最大化”一个窗口,然后返回上一个窗口布局

打开多个窗口后,有没有办法暂时关闭除活动窗口之外的所有窗口,然后按原样重新打开所有窗口?

我知道这only会关闭除活动窗口之外的所有其他窗口,但我不知道如何返回到上一个窗口布局。mksession几乎是这样做的。有没有什么好办法把它们粘在一起?

vim

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

"Overload"函数模板基于函数对象operator()签名

考虑一个函数模板的示例,该函数模板将函数引用作为其第一个参数.它根据第一个参数的函数签名重载.每个重载的主体为其签名适当地提供第一个参数函数.

template<typename T>
struct MapTtoT { typedef T (type)(const T); };

template<typename T>
std::vector<T> map_vec(
        const typename MapTtoT<T>::type& fnc,
        const std::vector<T>& source)
{
    std::vector<T> dest;
    dest.reserve(source.size());
    for (const auto i : source)
    {
        dest.emplace_back(fnc(i));
    }
    return dest;
}

template<typename T>
struct MapTandVectoT { typedef T (type)(const T, const std::vector<T>&); };

template<typename T>
std::vector<T> map_vec(
        const typename MapTandVectoT<T>::type& fnc,
        const std::vector<T>& source)
{
    std::vector<T> dest;
    dest.reserve(source.size());
    for (const auto i : source)
    {
        dest.emplace_back(fnc(i, source));
    }
    return dest;
}
Run Code Online (Sandbox Code Playgroud)

由于过载,对这些函数中的任何一个的引用都可以作为第一个arg传递:

int …
Run Code Online (Sandbox Code Playgroud)

c++ templates overloading c++11

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

是否可以定义基本类型的隐式转换行为?C++

用户可以定义原语在基元之间的投射方式吗?或者他们如何投射用户定义的类型?("隐式铸造构造函数"?yikes)

这是一个假设的问题,很难想象一个用法,但也许人们可能想要影响投注如何投入布尔.

c++ casting

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

完全去缩小视觉块

如何映射键以完全去缩小视觉块?

我知道"手动"执行此操作的最佳方法是一次使用de-indent <,然后重复按下.,因此映射为:

vmap <leader>d <.................
Run Code Online (Sandbox Code Playgroud)

这确实有效,但我想知道"正确"的方法.以上也只适用于.有多少.

vim

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

函数调用的返回值是什么,如果该函数没有提供一个函数

假设我们有以下代码:

int func(char str[], int len) {
    // Don't return anything here.
}

int main() {
    char str[] = "Hello";
    int result = func(str, strlen(str));
    printf("%d\n", result);
}
Run Code Online (Sandbox Code Playgroud)

它会在我的电脑上打印一些字符串值-1679929632.当我执行时,它会不时变化.

谁能解释为什么会这样?

c stack-frame

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

标签 统计

c++ ×3

c ×2

vim ×2

c++11 ×1

c-preprocessor ×1

casting ×1

overloading ×1

stack-frame ×1

templates ×1