小编jab*_*baa的帖子

为什么库中不调用全局变量的构造函数?

我有一些遗留代码,其中包含一些使用全局变量的构造函数注册自身的单例类。这是一个很大的代码库,被编译成一个可执行文件。我尝试组织代码库并将代码重新分组到库中。当前代码的一个最小示例是

主程序

int main(int argc, char *argv[])
{
  return 0;
} 
Run Code Online (Sandbox Code Playgroud)

哈希.cpp

#include <iostream>

class Hash
{
public:
    Hash()
    {
        std::cout << "Hash\n";
    }
};

Hash a;
Run Code Online (Sandbox Code Playgroud)

当前的构建配置是

CMakeLists.txt

cmake_minimum_required(VERSION 3.26)
project(mcve)

add_executable(mcve main.cpp Hash.cpp)
Run Code Online (Sandbox Code Playgroud)

构建代码并运行可执行文件

Hash
Run Code Online (Sandbox Code Playgroud)

我已将构建配置修改为

cmake_minimum_required(VERSION 3.26)
project(mcve)

add_library(Hash Hash.cpp)
add_executable(mcve main.cpp)
target_link_libraries(mcve Hash)
Run Code Online (Sandbox Code Playgroud)

这将创建一个静态库libHash.a并将其链接到可执行文件。编译相同的代码并运行可执行文件不会打印任何内容。为什么会出现这种差异?在哪里进行了描述?它是 C++ 标准的一部分还是编译器的一部分?它是特定于操作系统的(Linux 静态库)吗?这是未定义的行为吗?

c++ linux static-libraries

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

在该月的第一天获取月份编号时出现问题

我正在尝试解决 JS 返回上个月数字的问题,如果我输入“2023-01-01”或“2023-02-01”之类的日期,它会返回上个月数字。对于第一种情况,它返回月份数 11,但它应该是 0。在第二种情况下,它返回 0,而它应该是 1。如果我选​​择一个日期,例如“2023-01-02”,则正确的月份数是返回 0。我正在使用控制台进行调试,如下所示:

const date = "2023-01-01";
console.log(date)
console.log(new Date(date).getMonth()) 
Run Code Online (Sandbox Code Playgroud)

并使用 html 输入来设置日期变量。知道为什么会发生这种情况以及如何解决吗?

javascript

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

在 JavaScript 中按数组中存储的元素数量对对象键进行排序

我有一个项目,我收到一份产品列表,然后按制造商对其进行分组。我想以编程方式在页面上显示这些内容,但需要按照产品最多到最少的顺序执行此操作。我需要想出一种算法来将对象键从最多产品排序到最少产品。

这是我所拥有的以及我需要到达的位置的简化示例:

let devices = {
  Sony: [
    {name: 'Experia 1', productCode: 's1'}, 
    {name: 'Experia 2', productCode: 's2'}
  ],
  Apple: [
    {name: 'iPhone 8', productCode: 'a1'}, 
    {name: 'iPhone 9', productCode: 'a2'}, 
    {name: 'iPhone 10', productCode: 'a3'}, 
    {name: 'iPhone 11', productCode: 'a4'}
  ],
  Huawei : [
    {name: 'S 21', productCode: 'h1'}
  ],
  LG: [
    {name: 'V60', productCode: 'l1'},
    {name: 'V60 Ultra', productCode: 'l2'},
    {name: 'G7', productCode: 'l3'}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我需要对数据进行排序,以便首先从最多的制造商开始,然后下降到最少的制造商。因此需要修改为如下所示:

{
  Apple: [
    {name: 'iPhone 8', productCode: 'a1'}, 
    {name: 'iPhone 9', …
Run Code Online (Sandbox Code Playgroud)

javascript sorting reactjs

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

标签 统计

javascript ×2

c++ ×1

linux ×1

reactjs ×1

sorting ×1

static-libraries ×1