精华内容
下载资源
问答
  • 链接涉及到顺序问题,当先链接a库时,会出现函数未定义的情况,先链接b库是,也一样。 查了一下,可以交叉链接,比如:gcc -la -lb -la,大概是这样,但是经过我尝试任然不行(最后通过gcc -la -lb -la -l

    解决两个静态库之间相互依赖的问题

    两个静态库之间相互依赖:在静态库liba.a中声明了某些函数,但是实现在libb.a中,此时a库依赖于b库;然后在静态库中libb.a中,某些结构体或者变量在liba.a中声明的,此时b库依赖于a库。

    然后链接的时候,会出现两个库之间的相互依赖问题。链接涉及到顺序问题,当先链接a库时,会出现函数未定义的情况,先链接b库是,也一样。
    在这里插入图片描述

    查了一下,可以交叉链接,比如:gcc -la -lb -la,大概是这样,但是经过我尝试任然不行(最后通过gcc -la -lb -la -lb -la解决,这算什么…)。最后查到一个参数-Xlinker,用这个参数可以解决静态库之间相互依赖的问题。相较于前面一种,如果多个静态库出现依赖问题的话,就不用自己去管这个依赖关系是怎么样的了,非常的方便。

    main: gsoap/lib/libgsoap.a  onvif/lib/libonvif.a openssl/lib/libssl.a openssl/lib/libcrypto.a cJSON/lib/libcJSON.a 
    	$(CC)  -o $@ -Xlinker "-(" $^ -Xlinker "-)" $(LDLAGS)
    

    用法:

    $ gcc -o test -Xlinker "-(" liba.a libb.a -Xlinker "-)"
    

    完美解决。

    展开全文
  • C++类中的静态变量

    千次阅读 2017-10-15 23:45:30
    可以通过以下几个例子更形象的说明这个问题://test.cpp #include class A { public: static int a;...} 编译以上代码会出现“对‘A::a’未定义的引用”错误。这是因为静态成员变量a未定义,也就是还没有分
    可以通过以下几个例子更形象的说明这个问题:
    //test.cpp

    #include <stdio.h>
    class A {
    public:
    static int a; //声明但未定义
    };
    int main() {
    printf("%d", A::a);
    return 0;
    }

    编译以上代码会出现“对‘A::a’未定义的引用”错误。这是因为静态成员变量a未定义,也就是还没有分配内存,显然是不可以访问的。
    再看如下例子:
    //test.cpp

    #include <stdio.h>
    class A {
    public:
    static int a; //声明但未定义
    };
    int A::a = 3; //定义了静态成员变量,同时初始化。也可以写"int A:a;",即不给初值,同样可以通过编译
    int main() {
    printf("%d", A::a);
    return 0;
    }

    这样就对了,因为给a分配了内存,所以可以访问静态成员变量a了。
    因为类中的静态成员变量仅仅是声明,暂时不需分配内存,所以我们甚至可以这样写代码:
    //a.cpp

    class B; //这里我们使用前置声明,完全不知道B是什么样子
    class A {
    public:
    static B bb;//声明了一个类型为B的静态成员,在这里编译器并未给bb分配内存。
    //因为仅仅是声明bb,所以编译器并不需要知道B是什么样子以及要给其对应的对象分配多大的空间。
    //所以使用前置声明"class B"就可以保证编译通过。
    };
    
    
    类的析构函数什么时候会调用?
    在这个对象的作用域最后..

    比如你在main里面声明了一个类A..那么~A()会在main结束时调用..
    如果在自定义的函数f()里面声明了一个A 函数f结束的时候就会调用~A()

    或者你delete 指向A的指针..
    或者显式的调用析构函数

    展开全文
  • 【C++】静态变量定义

    2020-03-17 18:54:18
    //变量定义,在编译的时候将会报出:‘A::count’未定义的引用”错误。这是因为静态成员变量count未定义,也就是还没有分配内存,显然是不可以访问的。 《c++primer》里面说在类外定义和初始化...

    类内静态变量需在外部进行声明


    为什么?
    因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导致每个对象都包含该静态成员,这是矛盾的。

    如果不增加int A::count = 0 ; //变量定义,在编译的时候将会报出:‘A::count’未定义的引用”错误。这是因为静态成员变量count未定义,也就是还没有分配内存,显然是不可以访问的。

    《c++primer》里面说在类外定义和初始化是保证static成员变量只被定义一次的好方法。 但为什么static const int就可以在类里面初始化呢?
    想起C中一个函数里定义一个static变量是为了保证只初始化一次。

    那么,是否可以这样理解: static数据成员在类外定义和初始化是为了保证只被定义和初始化一次,这样编译器就不必考虑类的函数里面第一个对static变量的’=’操作是赋值还是初始化了。 static const int可以在类里面初始化,是因为它既然是const的,那程序就不会再去试图初始化了。


    如下:
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • main.cpp:(.text._ZN6Object4useSEv[_ZN6Object4useSEv]+0x1a):对‘Object::i’未定义的引用 常用Java不懂C++的静态方法使用方式。尝试过直接初始化 main.cpp:11:16: error: ISO C++ forbids in-class ...
    main.cpp:(.text._ZN6Object4useSEv[_ZN6Object4useSEv]+0x1a):对‘Object::i’未定义的引用

    常用Java不懂C++的静态方法使用方式。尝试过直接初始化

    main.cpp:11:16: error: ISO C++ forbids in-class initialization of non-const static member ‘Object::i

    其实只要在cpp里专卖初始化下就行

    int Object::i=0;

    转载于:https://www.cnblogs.com/Jacket-K/p/7783379.html

    展开全文
  • 但具体访问时(程序运行期)会报错【如未定义的静态变量】。因此,需要把定义部分的代码包括进工程里来。 参考: 1,没有加入相应lib库文件. 2.类成员有声明,但没有定义.或者定义与声明不符合.
  • Cppcheck着重于检测未定义的行为和危险的编码结构,未定义行为包括:死去的指针除零整数溢出无效位移位操作数无效的转换STL的无效使用内存管理空指针取消引用出界检验未初始化变量文字常量数据更多检查范围参考cpp...
  • LNK2019常见情况及解决方法

    万次阅读 多人点赞 2018-03-22 15:55:00
    导致LNK2019的常见问题:(1)未链接的对象文件或包含符号定义的库(2)符号声明的拼写不与符号的定义相同(3)使用了函数,但类型或参数数目不匹配函数定义(4)声明但未定义的函数或变量(5) 调用约定是函数声明...
  • 程序员自我修养笔记<关于符号表>

    千次阅读 2013-11-20 20:06:44
    如果A文件引用了B文件中的变量或方法,那么在符号表中就会标记这些变量或方法是没有定义了,在链接时候如果没有找到这些变量或方法定义,在链接时候就会报符号未定义错误。 2. C语言编译后执行语句都编译...
  • 1. 联合体union 一个 union 可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当某个成员被赋值后其他成员变为未定义状态。 默认访问控制符为 public ...2. 全局变量和全局静态变量、局
  • 如果类成员没有通过构造函数初始化,类似于局部变量默认初始化,其值将是未定义的,这是不明智和危险的做法。 通常都会通过自定义构造函数将所有成员初始化,需要注意的是常量,引用和没有默认构造函数的类类型必须...
  • 2.未初始化的内置类型局部变量将产生未定义的值。静态局部变量除外,初始化为0。 3.如果一个函数永远也不会被用到,那它可以只有声明没有定义。 4.熟悉C的程序员常常使用指针类型的形参访问函数外部的对象。在C++...
  • 1.10 同一个静态(static)函数或变量的所有声明都必需包含static存储类型吗? 1.11 extern在函数声明中是什么意思? 1.12 关键字auto到底有什么用途? 类型定义(typedef) 1.13 对于用户定义类型,typedef和#...
  • 1.10 同一个静态(static)函数或变量的所有声明都必须包含static存储类型吗? 35 1.11 extern在函数声明中是什么意思? 35 1.12 关键字auto到底有什么用途? 36 类型定义(typedef) 36 1.13 对于用户定义类型,...
  • 1.10 同一个静态(static)函数或变量的所有声明都必须包含static存储类型吗?  1.11 extern在函数声明中是什么意思? 1.12 关键字auto到底有什么用途? 类型定义(typedef)  1.13 对于用户定义类型,typedef和#...
  •  存储类型 1.10 同一个静态(static)函数或变量的所有声明都必须包含static存储类型吗? 1.11 extern在函数声明中是什么意思? 1.12 关键字auto到底有什么用途? 类型定义(typedef) 1.13 对于用户定义类型,...
  • c++编译错误

    2017-01-17 11:10:43
    变量未定义的引用:  1.如果变量是类中的静态成员,需要先在类外部初始化。否则会出现此种错误 二。头文件包含了,却报  zsp_ipc_proxy_client.hh:8:1: 错误:expected class-name before ‘{’ token  代码:...
  • 1.10 同一个静态(static)函数或变量的所有声明都必须包含static存储类型吗? 6 1.11 extern在函数声明中是什么意思? 6 1.12 关键字auto到底有什么用途? 7 类型定义(typedef) 7 1.13 对于用户定义类型,...
  •   自动对象:只存在于块执行期间的对象,当块的执行结束后,块中创建的自动对象的值就变成未定义的。   局部静态对象:在程序的执行路径第一次经过对象定义语句初始化后,直到程序终止才被销毁,对象所在的函数...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    1.10 同一个静态(static)函数或变量的所有声明都必须包含static存储类型吗? 6 1.11 extern在函数声明中是什么意思? 6 1.12 关键字auto到底有什么用途? 7 类型定义(typedef) 7 1.13 对于用户定义类型,...
  • 【ES6】ES6语法简述

    千次阅读 2017-09-16 11:32:31
    声明 1. const 静态资源变量声明,不能修改...先定义后使用,变量定义不会自动提升,否则会报变量未定义的错误。 2.2 块作用域 每个大括号被视为一个作用域。逐级外层作用域查找,直到找到为止。 2.3 for语...
  • 1.10 同一个静态(static)函数或变量的所有声明都必须包含static存储类型吗? 1.11 extern在函数声明中是什么意思? 1.12 关键字auto到底有什么用途? 类型定义(typedef) 1.13 对于用户定义类型,typedef 和#define有...
  • 1.10 同一个静态(static)函数或变量的所有声明都必须包含static存储类型吗? 1.11 extern在函数声明中是什么意思? 1.12 关键字auto到底有什么用途? 类型定义(typedef) 1.13 对于用户定义类型,typedef 和#define有...
  • 单个java 类加载顺序(先...(因为想要使用一个变量,先要定义声明,否则不能用,而静态代码块中直接引用了a,说明他用静态属性定义a) 表明:静态方法>普通属性 表明:静态属性>静态代码块>静态方法
  • 面试积累

    2013-11-18 18:43:20
    1.在函数外声明的变量和有静态存储类型的变量会自动付初值为0,... 原因:i在同一表达式的不同的地方被引用,会导致无意义的结果,无法判断a[i]中是旧值还是新值( 警告: ‘i’上的运算结果可能是未定义的) 3.(i+=j
  • splint使用

    2012-11-15 08:33:42
    未定义的变量错误 类型错误 内存检查 splint使用     一.splint介绍 splint是一个静态检查C语言程序安全弱点和编写错误的工具。splint会进行多种常
  • 基本调试

    2016-08-08 16:38:00
    例如,"引用未定义的变量", "传递了错误的参数"。这些错误只能在运行的时候被抛出。静态代码分析就是用来解决这样问题的技术,它试图在程序未运行之前对代码分析来检查一些可能的错误,避免在运行之后才发现,提升...
  • js基础总结

    2020-10-16 09:58:59
    数据类型 分类 基本类型(值):String 、Number 、boolean、 undefined、 null 引用类型(对象):object、 function 、array ...未定义变量的数据类型为 undefined 函数基础 定义方法 1、静态方法
  • thymeleaf学习笔记

    2019-05-15 17:06:10
    thymeleaf是一个支持html原型的自然引擎,它在html标签增加额外的属性来达到模板+数据的展示方式,由于浏览器解释html时,忽略未定义的标签属性,因此thymeleaf的模板可以静态运行。 数据访问模式: ${…},变量...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

未定义的引用静态变量