- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当我使用我的类实现之一将此代码添加到现有 cpp 中时
#include <iostream>
struct TestStruct{
TestStruct(int i)
{
std::cerr << i << std::endl;
x = i;
}
int x;
};
TestStruct t(8);
它在 main
执行之前打印 8。
但是当我创建新的空文件 test.cpp 并将相同的代码放入其中时,什么也没有打印出来。我检查了这个 cpp 是否被编译和链接。所有 cpp 文件都编译为静态库,然后将这个库与 main.o 链接到可执行文件中。我使用 g++ 5.3 唯一的选项是 -std=C++14
。
为什么在第二种情况下全局变量初始化被遗漏了?
最佳答案
您将 TestStruct
类作为单独的模块添加到静态库中,并将其与您的可执行文件链接。
使用静态库的全部目的是,只有那些具有您正在链接的可执行文件引用的任何符号、类或其他资源的模块——它们才会链接到可执行文件中。静态库中没有任何被主可执行文件直接或间接引用的符号的模块不会链接到主可执行文件中。这就是静态库的意义所在。
因为您的可执行文件没有显式引用 TestStruct
类,所以该模块没有链接到您的可执行文件中,也没有成为最终可执行文件的一部分。
但是当您在可执行文件已经引用和使用(直接或间接)的现有模块中添加 TestStruct
类时,该类以及其他模块中的所有其他符号和类, 链接到您的可执行文件并成为最终可执行文件的一部分。
因为您的可执行文件引用了其他模块中的某些符号或其他资源,所以该模块中的所有内容(包括测试类)都链接到可执行文件中。
关于c++ - 没有全局变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37614050/
我正在使用 Gunicorn 为 Django 应用程序提供服务,它工作正常,直到我将其超时时间从 30 秒更改为 900000 秒,我不得不这样做,因为我有一个用例需要上传和处理一个巨大的文件(过程
我有一个带有非常基本的管道的Jenkinsfile,它可以旋转docker容器: pipeline { agent { dockerfile { args '-u root' } } stag
在学习 MEAN 堆栈的过程中,我遇到了一个问题。每当我尝试使用 Passport 验证方法时,它都不会返回任何响应。我总是收到“localhost没有发送任何数据。ERR_EMPTY_RESPONS
在当今的大多数企业堆栈中,数据库是我们存储所有秘密的地方。它是安全屋,是待命室,也是用于存储可能非常私密或极具价值的物品的集散地。对于依赖它的数据库管理员、程序员和DevOps团队来说,保护它免受所
是否可以创建像图片上那样的边框?只需使用 css 边框属性。最终结果将是没 Angular 盒子。我不想添加额外的 html 元素。我只想为每个 li 元素添加 css 边框信息。 假设这是一个 ul
我是一名优秀的程序员,十分优秀!