修改程序的入口点时未调用全局变量的构造函数
Global variable's constructor has not been invoked while modify program’s entrypoint
我想将程序的入口点从主函数更改为自定义函数,但在这种情况下似乎无法调用全局变量的构造函数。
像这样的代码:
#include <stdin.h>
#include <stdlib.h>
const char my_interp[] __attribute__((section(".interp"))) = "/lib64/ld-linux-x86-64.so.2";
class A {
public:
A() {
printf("construct An");
}
};
A a;
int main() {
printf("main startn");
}
extern "C" {
int smain() {
printf("smain startn");
exit(0);
}
}
编译命令是这样的:
g++ -g -Wl,-e,smain -o smain smain.cc
使用-e
选项进行编译可以替代_start
例程,而不是main
。
当你使用start
的替代方法时,你将丢失初始化,这将是_start
例程的一部分。
在这种特殊情况下,您将丢失构造函数对A
的调用,因为a
是全局的。 也不能使用命令行参数。
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 内联函数中具有内部链接的全局变量
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 全局变量 多读取器 一个写入器多线程安全?
- 修改程序的入口点时未调用全局变量的构造函数
- 无全局变量或功能参数的递归调用
- 为什么不调用全局静态变量的析构函数
- 确定函数是否是在没有设置全局变量的情况下调用的
- 人造人.NDK.如何记录全局变量的调用析构函数
- 如何在主程序流中不调用全局变量的情况下填充全局变量
- 为什么全局变量会给函数调用中的编译器优化带来麻烦
- Qt没有用于使用全局变量调用的匹配函数
- NDK中全局变量的C++析构函数何时调用
- R调用Cpp代码:全局变量未重新初始化
- 如何使用 gdb 查找全局变量的析构函数调用?
- 使用C与C++中的函数调用初始化全局变量
- 我可以用函数调用的结果初始化一个全局变量吗
- 全局变量在main c++中调用时失去它的值