アプリケーション開発ポータルサイト
ServerNote.NET
ServerNote.NET厳選キャンペーン・クーポンはこちら!
カテゴリー【C/C++
error: gettid was not declared in this scopeと言われる場合
POSTED BY
2021-09-30

C++のコードでgettidを呼ぶと、表題のように言われコンパイルできない場合がある。

#include <sys/types.h>
#include <unistd.h>

と、gettidのmanページのとおりにインクルードしているにかかわらず、である。

原因は、C++コンパイラ(g++)ではgettidのラッパーは無い、ということである。代わりにsyscallを使うこと、とある。

#include <sys/types.h>
#include <unistd.h>
#include <sys/syscall.h>

pid_t tid = syscall(SYS_gettid);

とすれば、C++コード上でも正常にスレッドIDが取得できる。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【webmaster/管理人】
自営業プログラマー
ご連絡は以下アドレスまで★

☆ServerNote.NETショッピング↓
ShoppingNote
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】