小编zup*_*zt3的帖子

QtWebEngine - 同步执行JavaScript以读取函数结果

我在我的一个C++类中使用以下方法(使用QtWebEngine):

    QString get()
    {
        QString result;

        view->page()->runJavaScript("test();", [this](const QVariant &v)
            {
                result = v.toString();
            });

        return result;
    }
Run Code Online (Sandbox Code Playgroud)

它是执行test()JS函数并返回此调用的结果.

不幸的是,回调是异步的,程序崩溃了.我怎样才能使它工作?

c++ qt multithreading callback qtwebengine

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

Git - 将子文件夹推送到不同的存储库

我有一个包含许多文件和项目的大存储库。此 repo 中的子文件夹之一必须是一个新的、单独的存储库。

我不需要在新存储库中保留历史记录,但我必须能够随时使用原始存储库的更改来更新新存储库。

这个想法是旧的 repo 是一个私有的内部 gitlab,而新的 repo 是已部署项目的公共 repo。

我怎样才能做到这一点?

git version-control github gitlab

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

GCC - 包含编译标志的宏

GCC中是否有包含用于编译程序的编译标志的宏?

我想要这样的东西:

printf("Compilation flags: %s", __FLAGS__);
Run Code Online (Sandbox Code Playgroud)

输出例如:

Compilation flags: -02 -g
Run Code Online (Sandbox Code Playgroud)

c c++ gcc compilation g++

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

从硬件IRQ号获取Linux IRQ号

我有一个 GPIO 外设,在设备树中定义为:

gpio0: gpio@2300000 
{
    compatible = "fsl,qoriq-gpio";
    reg = <0x0 0x2300000 0x0 0x10000>;
    interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
    gpio-controller;
    #gpio-cells = <2>;
    interrupt-controller;
    #interrupt-cells = <2>;
};
Run Code Online (Sandbox Code Playgroud)

我想为此编写一个中断处理程序(作为内核模块)。但这个 IRQ 编号 (66) 是一个硬件编号,我需要一个虚拟的 Linux IRQ 编号将其传递给request_irq.

我怎样才能得到这个号码?只有一个中断控制器(GIC)。

有没有一种方法可以在不编写平台设备驱动程序的情况下执行此操作(因为可能已经有一个在系统中工作,并且我认为我无法注册另一个)。

linux driver device linux-device-driver linux-kernel

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

C++20中反射的当前状态

我开始阅读 C++20 中的反射,并感到非常困惑。它的当前状态是什么,即我们现在可以使用多少?

我找到了反射 TS - 但即使这个网站上的例子也无法编译(在 GCC11 和 C++20 上),因为编译器找不到“#include <experimental/reflect>”......所以它不完全在 GCC 中?

所以我的问题是:我们现在可以使用任何反射,而无需等待 C++23 吗?'任何'我的意思是例如查询编译器以获取类成员列表、枚举名称等?我所说的“使用”是指在生产代码中,而不仅仅是为了玩耍。

c++ reflection metaprogramming c++-standard-library c++20

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

Buildroot 不生成压缩的内核映像

我已经成功地使用 buildroot (v. 2019.05) 来构建 u-boot 和 Kernel,并且能够一起启动它。

问题是,即使我选择内核压缩模式为gzip,我得到的只是未压缩的Image文件。

在输出目录(以及 Linux)中只有Image文件,而应该有Image.gz.

如何Image.gz从 / 而不是生成Image

linux embedded kernel buildroot

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

C++ 使派生类只能从工厂/基类实例化

我正在建模类来表示带有子模块的模块等等。我使每个子模块都从基类(模块)派生。

但现在我想让除了某些特定方法(如工厂模式)之外的任何地方都无法创建子模块 - 以便为子模块提供一些配置。看代码:

class Module
{
    public:
        template<typename T, typename... Args>
        std::shared_ptr<T> addSubModule(Args&&... args)
        {
            std::shared_ptr<T> module = std::make_shared<T>(args...);

            children.emplace_back(module);
            module->parent = this;

            return module;
        }

    protected:
        Module* parent = this;
        std::vector<std::shared_ptr<Module>> children;
};


class SomeSubModule : public Module
{
    public:
        SomeSubModule(int param1, int param2)
        {
            // ... some init
        }
};


void Usage()
{
    Module rootModule;

    rootModule.addSubModule<SomeSubModule>(1, 2);   // <-- Way 1) This is what I want
    SomeSubModule sub(1, 2);                        // <-- Way 2) This also works, but …
Run Code Online (Sandbox Code Playgroud)

c++ oop inheritance design-patterns

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