__weak in Visual C++

Nov 22, 2009 19:16

Спасибо Jonathan Caves из Visual C++ Compiler Team, я узнал, что в микрософтовском компиляторе inline (или __inline) заставляет линкер рассматривать функцию как слабую ссылку (типа weak в ARM-компиляторе) (если компилятор не решит действительно "заинлайнить" эту функцию). Но оказывается, можно сочетать __inline с __declspec(noinline). Тогда компилятору придется создать эту функцию, и можно будет, например, пользоваться пойнтером на нее. Таким образом, достаточно определить макро

#ifdef _MSC_VER
#define __weak __declspec(noinline) __inline
#endif

и можно будет писать, как для RVCT, что-то вроде

__weak int func(int arg){...}

программистское

Previous post Next post
Up