一行に関数、もしくはマクロが2つ宣言?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Kona

一行に関数、もしくはマクロが2つ宣言?

#1

投稿記事 by Kona » 8年前

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__)))   // <-------

 

アバター
へにっくす
記事: 634
登録日時: 11年前
住所: 東京都

Re: 一行に関数、もしくはマクロが2つ宣言?

#2

投稿記事 by へにっくす » 8年前

ここの事をいってるのかな。
仮想通貨 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

スレッドセーフで調べると幸せになれるかもしれません。
(使ったことがないので的外れでしたらすみません)
written by へにっくす

kona

Re: 一行に関数、もしくはマクロが2つ宣言?

#3

投稿記事 by kona » 8年前

回答有難うございました。

#defineが関数名でも使えるを知りませんでした。
また、処理内容についてもアドバイス頂きとても感謝です。

閉鎖

“C言語何でも質問掲示板” へ戻る