ページ 1 / 1
一行に関数、もしくはマクロが2つ宣言?
Posted: 2016年5月17日(火) 21:32
by Kona
C++初心者です。はじめて質問します。
クラスや#defineで一行に関数やマクロを2つ並べて宣言してるのですが,
文法的にどのような意味があるのでしょうか?
コード:
//1
class LOCKABLE AnnotatedMixin : public PARENT
{
public:
void lock() EXCLUSIVE_LOCK_FUNCTION() // <-------
{
PARENT::lock();
}
//2
#define EXCLUSIVE_LOCK_FUNCTION(...) _attribute__((exclusive_lock_function(__VA_ARGS__))) // <-------
Re: 一行に関数、もしくはマクロが2つ宣言?
Posted: 2016年5月17日(火) 23:32
by へにっくす
ここの事をいってるのかな。
仮想通貨 BitCoin のオープンソースの一部ですね。
https://dev.visucore.com/bitcoin/doxyge ... mixin.html
LLVM Clangのオプション-Wthread-safetyを指定することで
EXCLUSIVE_LOCK_FUNCTION()
が
_attribute__((exclusive_lock_function()))
に置き換わると予想します。
オプション指定していないとEXCLUSIVE_LOCK_FUNCTION()がなくなるだけ。
文法的にはそれだけだと思います。
_attribute__((exclusive_lock_function()))
に関しては、以下を参照。英語です。今はEXCLUSIVE_LOCK_FUNCTION()がACQUIRE()になってるのかな。
CLang 3.9 documentation - Thread Safety Analysis
スレッドセーフで調べると幸せになれるかもしれません。
(使ったことがないので的外れでしたらすみません)
Re: 一行に関数、もしくはマクロが2つ宣言?
Posted: 2016年5月18日(水) 22:21
by kona
回答有難うございました。
#defineが関数名でも使えるを知りませんでした。
また、処理内容についてもアドバイス頂きとても感謝です。