LoginSignup
5
5

More than 5 years have passed since last update.

ClangでC++11を使おうとするとgetsなんて知らんと怒られる件

Last updated at Posted at 2014-10-26

自前でGCC4.9を入れて、そちらのヘッダファイルを使う方法もありますが、root権限で勝手に色々できる環境なら、cstdioに小細工をしてしまってもコンパイル通って実行できました・・・

--- /usr/include/c++/4.8/cstdio.bak 2014-04-05 03:51:34.000000000 -0700
+++ /usr/include/c++/4.8/cstdio 2014-04-05 03:51:34.000000000 -0700
@@ -117,7 +117,9 @@
   using ::fwrite;
   using ::getc;
   using ::getchar;
+#ifndef __clang__
   using ::gets;
+#endif
   using ::perror;
   using ::printf;
   using ::putc;

そのほかコンパイル通すために直した些細な違い、、
* Clangだとconstexprな値を得るときにreinterpret_castが使えなかった。
* Clangだと、enable_if<NUM>::typeがだめで、enable_if<NUM != 0>::typeとしないといけなかった。

※GCC4.8以前のlibc++ヘッダを使うと、勝手にgetsを参照しようとする問題の回避策です。頑張ってgets()を使う方法ではありませんのであしからず。

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5