質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

2115閲覧

C++、clangでコンパイルする際にquick_exit()が使えない。

waya

総合スコア20

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/02/27 12:02

###発生している問題・エラーメッセージ
C++でquick_exit()が使えません。
ヘッダファイル<cstdlib>をincludeしているのですが、
g++でコンパイルすると

error: use of undeclared identifier 'quick_exit' quick_exit(0); ^ 1 error generated.

こちらのエラーが消えずに困っています。
おそらくヘッダファイルをちゃんと記入していれば変数名が宣言されていないとのエラーは出ないと思うのですがどうでしょうか?
どのサイトを調べても同じようなエラーが出ている人が見つからず困っております。
もしかするとclangの影響なのかな・・と思っていたのですがいかがでしょうか。
ご回答おまちしております。

###補足情報(言語/FW/ツール等のバージョンなど)
macOS Sierra

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

現象を確認しました。HomebrewでいれたGCCでも(Xcodeではないほうの)LLVMでも駄目なようです。

ヘッダファイルレベルで確認すると、cstdlibが最終的に読み込むシステムのヘッダ(/usr/include/stdlib.h)にquick_exitがないため、Macでは使えないようです。FreeBSDやLinuxでは同じClangを使ってもヘッダファイルでは有効になるようなので、たぶん使えるでしょう。

つまり、システムのライブラリレベルでquick_exitが用意されていないから、システムのヘッダファイルにも用意されていない事が原因のようです。Macのいわゆるlibc(Cライブラリ)はglibcではなく/usr/lib/libSystem.B.dylibという独自のものを使っています。glibcのようにC11/C++11を満たす全ての標準ライブラリが含まれているわけではありません(glibcでもC11のthreadsはありませんが)。-std=c++11をつけようが、コンパイラを変えようが、そもそもOSとして、そのような動作をする仕組みが用意されていないということが原因のため、Macで使う手段は無いと思います。

投稿2017/02/27 13:19

編集2017/02/27 13:20
raccy

総合スコア21733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

waya

2017/03/01 03:45

こんにちは。 なるほど、なぜmacで利用できないか理解できました。今回は別の方針でプログラムを終了させる方法をとることにしたので大丈夫そうです。 ご回答ありがとうございました!
guest

0

こんにちは。

std::quick_exit()はC++11から導入されているようですので、-std=c++11オプションが必要なのかも知れません。

投稿2017/02/27 12:29

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

waya

2017/03/01 03:43

こんにちは、ご回答ありがとうございました。今回はこの関数を使わない方針でプログラムを立てました!ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問