我有一些遗留代码,其中包含一些使用全局变量的构造函数注册自身的单例类。这是一个很大的代码库,被编译成一个可执行文件。我尝试组织代码库并将代码重新分组到库中。当前代码的一个最小示例是
主程序
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 静态库)吗?这是未定义的行为吗?
我正在尝试解决 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 输入来设置日期变量。知道为什么会发生这种情况以及如何解决吗?
我有一个项目,我收到一份产品列表,然后按制造商对其进行分组。我想以编程方式在页面上显示这些内容,但需要按照产品最多到最少的顺序执行此操作。我需要想出一种算法来将对象键从最多产品排序到最少产品。
这是我所拥有的以及我需要到达的位置的简化示例:
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)