由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 急问:compile and build dependency
相关主题
C++ questionC++ 问题
问个题。问个面试问题,请教
c++ initialize struct请教个Bloomberg 的 C++ 题目
一道c++的考古题some C++ interview questions
find bugs of c++ codespointer to base class = new derived, what will happend??
C++的一个小疑问,求解惑包含指针的类和vector的问题
[合集] C++ interview question helpc++ question
问一个 copy constructor 的问题 (C++)compiler created methods
相关话题的讨论汇总
话题: recompile话题: dependency话题: compile话题: build话题: add
进入Programming版参与讨论
1 (共1页)
s**9
发帖数: 207
1
一个类用于多个函数库. 现在对这个类做如下修改:
增加constructor
增加数据成员
将destructor改为virtual
给一个函数增加一个带缺省值的参数
问哪些情况下需要recompile所有的库来确保一个应用能正确地build?
哪些书会讲到这种问题? C++? design pattern?
x****u
发帖数: 44466
2
当然需要!

【在 s**9 的大作中提到】
: 一个类用于多个函数库. 现在对这个类做如下修改:
: 增加constructor
: 增加数据成员
: 将destructor改为virtual
: 给一个函数增加一个带缺省值的参数
: 问哪些情况下需要recompile所有的库来确保一个应用能正确地build?
: 哪些书会讲到这种问题? C++? design pattern?

t****t
发帖数: 6806
3
人家问你要吃饭还是吃面,你说当然要
怎么跟我女儿似的

【在 x****u 的大作中提到】
: 当然需要!
s**9
发帖数: 207
4
答案是都要, 要解释为什么.
就是觉得题很怪,不知道是不是自己漏了哪一块的知识.

【在 x****u 的大作中提到】
: 当然需要!
t****t
发帖数: 6806
5
这是个老题了
其实增加一个constructor, 如果和旧的不冲突, 是有可能不需要重编译的
另外几个确实都需要
这个问题实际上的问的是C++类代码的interface和implementation
增加一个数据成员相当于改变了sizeof
把dtor改成virtual相当于改变了delete的调用方式
增加一个有缺省值的参数把成员的signature改了(缺省值不是signature的一部分)
但是增加一个普通的ctor, 如果没有代替系统产生的缺省ctor, 那相当于增加一个非
virtual的普通成员(ctor不可能是virtual), 这个可以不用recompile. 如果代替了,
那就是改动了.

【在 s**9 的大作中提到】
: 答案是都要, 要解释为什么.
: 就是觉得题很怪,不知道是不是自己漏了哪一块的知识.

s**9
发帖数: 207
6

但是用户提供了ctor, 系统就不再产生缺省ctor了吧?

【在 t****t 的大作中提到】
: 这是个老题了
: 其实增加一个constructor, 如果和旧的不冲突, 是有可能不需要重编译的
: 另外几个确实都需要
: 这个问题实际上的问的是C++类代码的interface和implementation
: 增加一个数据成员相当于改变了sizeof
: 把dtor改成virtual相当于改变了delete的调用方式
: 增加一个有缺省值的参数把成员的signature改了(缺省值不是signature的一部分)
: 但是增加一个普通的ctor, 如果没有代替系统产生的缺省ctor, 那相当于增加一个非
: virtual的普通成员(ctor不可能是virtual), 这个可以不用recompile. 如果代替了,
: 那就是改动了.

t****t
发帖数: 6806
7
这个问题的前提是, 你recompile你的程序, 而不是修改你的程序再recompile
如果你能recompile, 那说明你的程序里没有使用缺省的ctor.
如果你需要修改程序, 那无论如何你都需要recompile, 这个我认为不在讨论范围内了.

【在 s**9 的大作中提到】
:
: 但是用户提供了ctor, 系统就不再产生缺省ctor了吧?

l***i
发帖数: 1309
8
Lippman's Inside C++ object model.
1. add constructor. no need.
2. add data, yes, since object layout changed.
3. destructor virtual, yes but not sure.
4. add a param with default value, no but not sure.

【在 s**9 的大作中提到】
: 一个类用于多个函数库. 现在对这个类做如下修改:
: 增加constructor
: 增加数据成员
: 将destructor改为virtual
: 给一个函数增加一个带缺省值的参数
: 问哪些情况下需要recompile所有的库来确保一个应用能正确地build?
: 哪些书会讲到这种问题? C++? design pattern?

s**9
发帖数: 207
9
我这么理解对不对。用个具体的例子来说:
Setting: C.h define a class C. C.c implements C. main.c includes C.h and
creates instances of C.
Question: If some changes are made to C.h. does recompiling main.c generate
a new main.o file?
如果这道题问的就是上面的情况,那么add data, change dtor to virtual会改变main
.o (所以需要recompile main.c). add a parameter with default value 也会改变
main.o (所以也需要recompile main.c). 这和上面thrust给的答案一致,但和lanti的
不一致?
add a constructor。有的情况main.c 不编译,有的时候编译但main.o会变,有的编译
且main.o不变。所以是否要recompile main.c 不定。
刚在精华区看到了这道题

【在 l***i 的大作中提到】
: Lippman's Inside C++ object model.
: 1. add constructor. no need.
: 2. add data, yes, since object layout changed.
: 3. destructor virtual, yes but not sure.
: 4. add a param with default value, no but not sure.

1 (共1页)
进入Programming版参与讨论
相关主题
compiler created methodsfind bugs of c++ codes
Forward declaration with unique_ptrC++的一个小疑问,求解惑
几个问题[合集] C++ interview question help
one question about operator delete问一个 copy constructor 的问题 (C++)
C++ questionC++ 问题
问个题。问个面试问题,请教
c++ initialize struct请教个Bloomberg 的 C++ 题目
一道c++的考古题some C++ interview questions
相关话题的讨论汇总
话题: recompile话题: dependency话题: compile话题: build话题: add