是否发生段故障取决于gcc编译命令中的cpp顺序?

Gstestso

我编写了一个简单的程序,当定义了新类(例如:One,Two)时,将一个值添加到全局设置容器中:

GlobalSet.h

#include <set>
struct GlobalSet{
public:
    static void* addValue(int val);
private:
    static std::set<int> s;
};

GlobalSet.cpp

#include "GlobalSet.cpp"
std::set<int> GlobalSet::s;
void* GlobalSet::addValue(int val){
    s.insert(val);
    return NULL;
}

一小时

struct One{};

一个.cpp

#include "One.h"
#include "GlobalSet.h"
void* globalset =GlobalSet::addValue(1);

二小时

struct Two{};

二.cpp

#include "Two.h"
#include "GlobalSet.h"
void* globalset2 =GlobalSet::addValue(2);

测试文件

int main(){
return 0;
}

但是这个程序会导致段错误,这取决于gcc编译命令中的cpp顺序:

g++ GlobalSet.cpp One.cpp Two.cpp test.cpp -o test.exe //normal
g++ One.cpp Two.cpp GlobalSet.cpp test.cpp -o test.exe //segment fault!!

为什么会发生呢?如何解决该问题,使其在不关心gcc编译中的cpp顺序的情况下起作用?

山姆·瓦尔沙夫奇克(Sam Varshavchik)

欢迎使用静态初始化顺序惨败

C ++标准不保证多个翻译单元中的全局对象的初始化顺序。

根据您的链接顺序,您的代码将globalset2首先尝试构建但是,这将调用静态类方法addValue(),该方法尝试访问std::set尚未构造的a

未定义的行为和崩溃。

要解决此问题,请访问www.google.com,搜索“静态初始化顺序惨败”,并继续阅读直到您理解问题为止。完成后,您将在代码中知道如何解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否发生段故障取决于gcc编译命令中的cpp顺序?

来自分类Dev

绘制像素的顺序是否取决于glDrawElements中的索引?

来自分类Dev

内核编译是否取决于DTS文件

来自分类Dev

模式文件grep的输出是否取决于模式文件中模式的顺序?

来自分类Dev

更改unix中的GCC编译顺序是否会删除文件?

来自分类Dev

INNER JOIN性能是否取决于表的顺序?

来自分类Dev

顺序取决于varchar字段中的json数据

来自分类Dev

顺序取决于varchar字段中的json数据

来自分类Dev

If语句取决于字符串中内容的顺序

来自分类Dev

取决于特定项目,公共单元中的条件编译?

来自分类Dev

分段故障。取决于ubuntu版本

来自分类Dev

追加到列表中,取决于值是否已存在

来自分类Dev

编译器是否必须评估表达式是否取决于模板参数?

来自分类Dev

如何确定数据框列是否包含特定列表,而不取决于其顺序?

来自分类Dev

Angular2修饰代码是否不能复制到js取决于类的顺序?

来自分类Dev

用gcc编译.cpp

来自分类Dev

是否有正确的别名类型取决于编译时传递的模板值参数(C ++)

来自分类Dev

填充路径取决于绘图顺序

来自分类Dev

异步Javascript文件,取决于顺序

来自分类Dev

空指针异常取决于or语句的顺序

来自分类Dev

Rails Query 不同的顺序取决于列

来自分类Dev

编译模块上的外部JAR取决于

来自分类Dev

CppCheck警告:表达式取决于x = x | =(1 << 3)中的求值顺序

来自分类Dev

为什么独立代码块的执行时间取决于Scala中的执行顺序?

来自分类Dev

如何检测列表中的下一个任务,具体取决于顺序

来自分类Dev

一列取决于Amazon QuickSight中另一列的顺序

来自分类Dev

匹配字符串中的所有字符,而不取决于其顺序

来自分类Dev

在多维javascript数组中查找唯一条目,顺序重要取决于级别

来自分类Dev

pyplot.hist histtype ='step'故障取决于数据

Related 相关文章

  1. 1

    是否发生段故障取决于gcc编译命令中的cpp顺序?

  2. 2

    绘制像素的顺序是否取决于glDrawElements中的索引?

  3. 3

    内核编译是否取决于DTS文件

  4. 4

    模式文件grep的输出是否取决于模式文件中模式的顺序?

  5. 5

    更改unix中的GCC编译顺序是否会删除文件?

  6. 6

    INNER JOIN性能是否取决于表的顺序?

  7. 7

    顺序取决于varchar字段中的json数据

  8. 8

    顺序取决于varchar字段中的json数据

  9. 9

    If语句取决于字符串中内容的顺序

  10. 10

    取决于特定项目,公共单元中的条件编译?

  11. 11

    分段故障。取决于ubuntu版本

  12. 12

    追加到列表中,取决于值是否已存在

  13. 13

    编译器是否必须评估表达式是否取决于模板参数?

  14. 14

    如何确定数据框列是否包含特定列表,而不取决于其顺序?

  15. 15

    Angular2修饰代码是否不能复制到js取决于类的顺序?

  16. 16

    用gcc编译.cpp

  17. 17

    是否有正确的别名类型取决于编译时传递的模板值参数(C ++)

  18. 18

    填充路径取决于绘图顺序

  19. 19

    异步Javascript文件,取决于顺序

  20. 20

    空指针异常取决于or语句的顺序

  21. 21

    Rails Query 不同的顺序取决于列

  22. 22

    编译模块上的外部JAR取决于

  23. 23

    CppCheck警告:表达式取决于x = x | =(1 << 3)中的求值顺序

  24. 24

    为什么独立代码块的执行时间取决于Scala中的执行顺序?

  25. 25

    如何检测列表中的下一个任务,具体取决于顺序

  26. 26

    一列取决于Amazon QuickSight中另一列的顺序

  27. 27

    匹配字符串中的所有字符,而不取决于其顺序

  28. 28

    在多维javascript数组中查找唯一条目,顺序重要取决于级别

  29. 29

    pyplot.hist histtype ='step'故障取决于数据

热门标签

归档