⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 forcelnk.h

📁 浙江大学的悟空嵌入式系统模拟器
💻 H
字号:
/////////////////////////////////////////////////////////////////////////////
// Name:        forcelnk.h
// Purpose:     see bellow
// Author:      Vaclav Slavik
// RCS-ID:      $Id: forcelnk.h,v 1.1 2005/03/16 06:49:42 kehc Exp $
// Copyright:   (c) Vaclav Slavik
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

/*

DESCRPITON:

mod_*.cpp files contain handlers for tags. These files are modules - they contain
one wxTagModule class and it's OnInit() method is called from wxApp's init method.
The module is called even if you only link it into the executable, so everything
seems wonderful.

The problem is that we have these modules in LIBRARY and mod_*.cpp files contain
no method nor class which is known out of the module. So the linker won't
link these .o/.obj files into executable because it detected that it is not used
by the program.

To workaround this I introduced set of macros FORCE_LINK_ME and FORCE_LINK. These
macros are generic and are not limited to mod_*.cpp files. You may find them quite
useful somewhere else...

How to use them:
let's suppose you want to always link file foo.cpp and that you have module
always.cpp that is certainly always linked (e.g. the one with main() function
or htmlwin.cpp in wxHtml library).

Place FORCE_LINK_ME(foo) somewhere in foo.cpp and FORCE_LINK(foo) somewhere
in always.cpp
See mod_*.cpp and htmlwin.cpp for example :-)

*/


#ifndef _WX_FORCELNK_H_
#define _WX_FORCELNK_H_



// This must be part of the module you want to force:
#define FORCE_LINK_ME(module_name)                                    \
                int _link_dummy_func_##module_name ();                \
                int _link_dummy_func_##module_name ()                 \
                {                                                     \
                    return 1;                                         \
                }


// And this must be somewhere where it certainly will be linked:
#define FORCE_LINK(module_name)                                       \
                extern int _link_dummy_func_##module_name ();         \
                static int _link_dummy_var_##module_name =            \
                               _link_dummy_func_##module_name ();

#define FORCE_WXHTML_MODULES() \
    FORCE_LINK(m_layout) \
    FORCE_LINK(m_fonts) \
    FORCE_LINK(m_image) \
    FORCE_LINK(m_list) \
    FORCE_LINK(m_dflist) \
    FORCE_LINK(m_pre) \
    FORCE_LINK(m_hline) \
    FORCE_LINK(m_links) \
    FORCE_LINK(m_tables) \
    FORCE_LINK(m_style)


#endif // _WX_FORCELNK_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -