2010-10-25 5 views
0

У меня есть следующие определения классов в exe и dll.EXE и DLL зависимости - Когда перекомпилировать EXE?

// A.exe: 
Class A { void fun() { B* b = new B(); b.funx(); } 

// B.dll: 
Class B { void funx (void) { C* y = new C(); y.funy(); } 
Class C { void funy() { } } 

Скажем, я меняю размер класса B, следует ли перекомпилировать A.exe? И следует ли перекомпилировать A.exe, даже если я изменю размер класса C?

ответ

2

Вы должны a.exe перекомпилировать каждый раз, когда общественный интерфейс B.dll изменений (не только размер, а также, когда члены перестроены, частные/общественные изменения [это также влияет на порядок членов, не будучи видимым из исходного кода], ...). Если C является частью открытого интерфейса, вам также необходимо перекомпилировать A.exe также каждый раз, когда изменения в C. Вам не нужно перекомпилировать a.exe, если C является частным классом b.dll, на который не ссылается файл a.exe. Также обратите внимание на то, что C можно косвенно ссылаться, например, когда ваш B::funx является встроенной функцией, так как тогда создание C может происходить в коде A.exe.

Как руты эмпирическое, когда вы заменяете определение C с декларацией class C;, и все еще может составить A.exe, вам не нужно заботиться о C. Но я бы предпочел, чтобы каждый раз компилировать A.exe, так как в какой-то момент в будущем код изменяется, так что это условие не выполняется, вам будет сложно отлаживать ошибки.

2

Вы должны перекомпилировать, если изменить размер класса B

Если размер B не изменяется Изменение размера класса C, вам не нужно перекомпилировать А.

кажется, B не наследуется от C, поэтому размер B не изменяется.

--Cheers

Смежные вопросы