小编gbm*_*ter的帖子

你可以关闭Mercurial分支而不先更新吗?

我知道您可以通过以下方式关闭Mercurial分支:

hg update rev-number
hg commit --close-branch -m "Closing branch."
Run Code Online (Sandbox Code Playgroud)

但是,我使用的一些存储库相当大,并且在发现多年前我想要关闭的松散分支之后,首先更新它可能需要几分钟(如果不是几小时),只做一次提交然后更新回到我原来的修订版(更多分钟,如果不是几小时).

所以我的问题是,有没有办法关闭Mercurial分支而不首先将工作目录更新到分支修订版?

mercurial branch

27
推荐指数
2
解决办法
3084
查看次数

lambda捕获的"这个"是不正确的.GCC编译器错误?

在过去的几天里,我一直在调试一个涉及C++中lambdas的奇怪问题.我已将问题减少到以下症状:

  • this指针被破坏拉姆达内(注:this总是被复制捕获,因此拉姆达应该得到自己的this指针,它指向的App对象)
  • 它仅在存在std::coutprint语句时发生,并在创建lambda之前调用.print语句看似完全不相关(例如print"Hello!").printf()也表现出相同的行为.
  • 它仅在交叉编译时发生.
  • 它使用标准的x86体系结构编译器编译并运行良好(参见示例).
  • 如果我在堆上创建lambda(并在App对象内保存指向它的指针),则不会发生错误.
  • 如果关闭优化(即,如果我设置-O0标志),则不会发生错误.它在优化设置为时发生-O2.

以下是我能想出的最简单,可编译的代码示例,它会导致问题.

#include <iostream>
#include <functional>

class App {

public:

    std::function<void*()> test_;

    void Run() {

        // Enable this line, ERROR is printed
        // Disable this line, app runs o.k.
        std::cout << "This print statement causes the bug below!" << std::endl;

        test_ = [this] () …
Run Code Online (Sandbox Code Playgroud)

c++ lambda arm compiler-bug c++11

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

有没有办法检查定义的宏,它同时等于某个值

我经常使用类似对象的预处理器宏作为C代码中的布尔标志来打开和关闭代码段.

例如

#define DEBUG_PRINT 1
Run Code Online (Sandbox Code Playgroud)

然后像使用它一样

#if(DEBUG_PRINT == 1)
    printf("%s", "Testing");
#endif
Run Code Online (Sandbox Code Playgroud)

但是,如果包含该头文件的头文件#define忘记包含在源代码中,则会出现问题.由于未声明宏,因此预处理器将其视为等于0,并且#if语句永远不会运行.

当忘记包含头文件时,可能发生非期望的,不守规矩的行为.

理想情况下,我希望能够检查宏是否已定义,并在一行中检查它是否等于某个值.如果未定义,则预处理器会抛出错误(或警告).

我正在寻找以下内容:

#if-def-and-true-else-throw-error(DEBUG_PRINT)
    ...
#endif
Run Code Online (Sandbox Code Playgroud)

这就像一个组合#ifdef#if,如果它不存在,使用#error.

我已经探索了一些途径,但是,预处理器指令不能在#define块内使用,据我所知,如果在#if语句中使用宏时没有定义宏,则没有预处理器选项来抛出错误/警告.

c macros directive c-preprocessor

16
推荐指数
4
解决办法
3万
查看次数

改变MahApps Metro主题

我知道MahApps地铁主题带有"主题"(颜色集),但我不知道如何从我的WPF应用程序中的默认设置更改它们.

我已经按照MahApps.Metro文档中的初学者教程(包括在页面顶部添加资源库),但没有提及更改主题.

组件/风格/ Colours.xaml文件具有"从国际化的主题包",这可能是一个有用的线索,有人在WPF设计比我好熟悉的注释.

我说的是应用程序范围内的主题更改,而不是单个控件.

wpf themes visual-c++ mahapps.metro

13
推荐指数
1
解决办法
2万
查看次数

将方程转换为位移操作

是否有任何标准方法将(任意)方程转换为位移操作?

我的意思是将任何不是+或 - 的东西转换成位移,所以结束方程只包含操作数<<,>>,+和 -.这样做有利于减少处理器密集度.

显然,这些结果方程只是近似值,在考虑更多订单(一阶,二阶等)时提供更好的准确性.

我已经在网上搜索了关于此的任何信息,但找不到任何信息,除了特定公式(sin,cos,inv等)的东西.

我想象的是多项式或泰勒的扩展过程,然后将其转换为位移操作.

c optimization performance bit-shift

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

如何将事件从Redux传递到React?

我有一个基于GUI react/redux的应用程序.作为视图的一部分,有一个"指示器"反应组件,我希望闪烁,并且使用CSS3动画(动画帧)完成闪烁.indicator.blink()调用react组件的成员函数使指示器闪烁(它基本上从DOM元素中删除了blink类,然后在1ms后再次添加它,作为一个黑客来解决没有"重启"api的事实一个CSS3动画).

在redux框架中发生某些操作(如果需要,它们可以是thunks),我希望blink()在react视图中调用此函数.怎么做到最好?

让redux动作修改app状态是不对的,然后指示元素将其中一个状态变量绑定为a prop,因为它不是一个状态,而是一个瞬时事件.但我知道没有其他方法可以通过redux动作来改变反应组件.

javascript events reactjs redux

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

为什么Vtables没有在嵌入式平台上正确实现?

我正在为嵌入式系统(特别是PSoC 5,使用PSoC Creator)开发代码,并使用C++编写代码.

虽然我已经克服了使用C++的大多数障碍,但首先使用编译器标志在C++中进行编译-x c++,定义new和delete运算符,确保编译器标志不会抛出异常,-fno-exception当它出现时我会遇到问题.来使用虚拟功能.

如果我尝试声明一个虚函数,编译器会给我错误undefined reference to "vtable for __cxxabiv1::__class_type_info".解决这个问题的唯一方法是使用编译器标志-fno-rtti,它可以防止错误并使其成功编译.但是,如果我这样做,嵌入式程序在尝试运行重载的虚函数时会崩溃,我认为这是因为vtable不存在.

我不明白为什么你不能在嵌入式平台上实现vtables,因为它只是在成员对象之前或之后的内存中的额外空间(取决于确切的编译器).

我试图使用虚函数的原因是因为我想使用FreeRTOS操作系统与C++和其他人都使用虚拟功能(参见实施这个http://www.freertos.org/FreeRTOS_Support_Forum_Archive/July_2010/freertos_Is_it_possible_create_freertos_task_in_c_3778071.html为讨论,以及https://github.com/yuriykulikov/Event-driven_Framework_for_Embedded_Systems,用于编写良好的嵌入式C++ FreeRTOS框架)

c++ compiler-construction embedded vtable freertos

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

使用Javascript将表格行添加到表格中间

我正在尝试使用Javascript在表中间添加一个新表行,其中新表行是其中一个现有行的副本。

在stackoverflow上有很多与此类似的问题,但是似乎没有一个问题可以帮助我解决这个问题。

function AddRow()
{
    var mainTable = document.getElementById('mainTable');

    mainTable.insertBefore(
        mainTable.rows[0].cloneNode(true),
        mainTable.rows.childNodes[2]);
}
Run Code Online (Sandbox Code Playgroud)

我知道问题出在传递给insertBefore()的最后一个变量中,就像我将其保留为空白时,代码可以正确执行,并将克隆的第一行插入表的末尾(如果没有第二个参数,它的行为就像 appendRow().

我收到错误“无法读取未定义的属性2”,我猜这意味着它没有将mainTable.rows.childNodes识别为要索引的有效对象。

我还尝试了以下方法,并在测试它时遇到了更加难以捉摸的错误“ NotFoundError:DOM Exception 8”

function AddRow()
{
    var mainTable = document.getElementById('mainTable');

    mainTable.insertBefore(
        mainTable.rows[0].cloneNode(true),
        mainTable.rows[2]);
}
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,它mainTable.appendChild(mainTable.rows[0].cloneNode(true))工作正常!问题是我不想将其添加到表的末尾。

html javascript dom

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

在嵌入式系统上使用 fopen() 需要什么?

我对标准 C 库提供的 FILE 函数系列很陌生。

我最近fopen()在研究了如何使用后偶然发现了类似的功能stdoutstdinstderrprintf().

我想知道,fopen()在嵌入式系统(不一定有操作系统支持)上需要使用什么。在阅读更多关于它的信息后,在更强大的嵌入式系统上做一个很酷的事情来挂钩说,一个 UART/SPI 接口,这样调用printf()就会从 UART 打印数据。同样,您可以通过调用从 UART 缓冲区读取数据scanf()

这也将增加便携性!(例如为 Linux 编写的代码,如果printf()支持的话会更容易移植)。如果文件在生产环境中运行,您还可以将调试数据打印到文件中,然后再从中读取。

你能fopen()在一个简单的嵌入式系统上使用吗?如果是这样,那么谁/何地/何时创建了“文件”(就我现在而言,文件fopen()没有malloc()空间,也没有指定多少)?或者您是否需要支持 FAT 文件的操作系统。如果是这样,像http://ultra-embedded.com/?fat_filelib这样的东西会起作用吗?使用 FreeRTOS 会有帮助吗?

c embedded fopen file

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