*参照元 [#k6bdfa80]
#backlinks

*説明 [#wcdecbe9]
-パス: 
--ダイナミックリンク有効: [[alsa-lib-1.0.27.2/include/global.h]]
--ダイナミックリンク無効: [[alsa-lib-1.0.27.2/include/global.h]]

-FIXME: これは何?
--説明

 例: ダイナミックリンク有効の場合
     libasound.so を nm で見るとたくさん出てくる。
 
 in src/pcm/pcm_hw.c
 -------------------
 SND_DLSYM_BUILD_VERSION(_snd_pcm_hw_open, SND_PCM_DLSYM_VERSION);
 -> __snd_pcm_hw_open_dlsym_pcm_001
    ^(1)
     ^^^^^^^^^^^^^^^^(2)
                     ^^^^^^^^^^^^^^(3)
 (1): プレフィクス、常に "_" である
 (2): name に指定したシンボル名
 (3): version に指定したシンボル名


**引数 [#pe0ab3ac]
-name
--名前(シンボル、文字列ではない)
-version
--バージョン(シンボル、文字列ではない)


**返り値 [#oeb50a03]
-なし
--関数ではない。


**参考 [#zfcefcdf]
-version に指定されるマクロの一覧
--[[alsa-lib-1.0.27.2/SND_CONFIG_DLSYM_VERSION_EVALUATE]]
--[[alsa-lib-1.0.27.2/SND_CONFIG_DLSYM_VERSION_HOOK]]
--[[alsa-lib-1.0.27.2/SND_CONTROL_DLSYM_VERSION]]
--[[alsa-lib-1.0.27.2/SND_HWDEP_DLSYM_VERSION]]
--[[alsa-lib-1.0.27.2/SND_PCM_DLSYM_VERSION]]
--[[alsa-lib-1.0.27.2/SND_RAWMIDI_DLSYM_VERSION]]
--[[alsa-lib-1.0.27.2/SND_SEQ_DLSYM_VERSION]]
--[[alsa-lib-1.0.27.2/SND_TIMER_DLSYM_VERSION]]
--[[alsa-lib-1.0.27.2/SND_TIMER_QUERY_DLSYM_VERSION]]


*実装 [#mcba42c4]
 #ifdef PIC /* dynamic build */
-ダイナミックリンク有効の場合

 (...略...)
 /**
  * \hideinitializer
  * \brief Appends the build version to the name of a versioned dynamic symbol.
  */
 #define SND_DLSYM_BUILD_VERSION(name, version) char __SND_DLSYM_VERSION(name, version);
-char 型の変数を宣言する。変数名は __SND_DLSYM_VERSION() で決める。
--[[alsa-lib-1.0.27.2/__SND_DLSYM_VERSION()]]

 #else /* static build */
 (...略...)
 
 /**
  * \hideinitializer
  * \brief Appends the build version to the name of a versioned dynamic symbol.
  */
 #define SND_DLSYM_BUILD_VERSION(name, version) \
   static struct snd_dlsym_link __SND_DLSYM_VERSION(snd_dlsym_, name, version); \
   void __SND_DLSYM_VERSION(snd_dlsym_constructor_, name, version) (void) __attribute__ ((constructor)); \
   void __SND_DLSYM_VERSION(snd_dlsym_constructor_, name, version) (void) { \
     __SND_DLSYM_VERSION(snd_dlsym_, name, version).next = snd_dlsym_start; \
     __SND_DLSYM_VERSION(snd_dlsym_, name, version).dlsym_name = # name; \
     __SND_DLSYM_VERSION(snd_dlsym_, name, version).dlsym_ptr = (void *)&name; \
     snd_dlsym_start = &__SND_DLSYM_VERSION(snd_dlsym_, name, version); \
   }
 
-
--[[alsa-lib-1.0.27.2/snd_dlsym_link]]
-
--[[alsa-lib-1.0.27.2/__SND_DLSYM_VERSION()]]

 #endif


*コメント [#s4450ba5]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS