タグ

cとC++に関するmas-higaのブックマーク (7)

  • 最新C++(C++23)からみた最新C(C23) - Qiita

    参考資料 次期C標準 (C23) の内容が固まったらしい cppreference.com - C23 🙇 Q. これはC++の記事というよりも、Cの記事ではないですか? A. 「お前がそう思うんならそうなんだろう お前ん中ではな」 C99言語機能では_Boolキーワードとして導入され、ヘッダstdbool.hによりbool型とtrue/false定数が有効となっていた。C23以降は常にbool/true/falseとして利用可能となる。 ↩ C99言語機能では_Static_assertキーワードとして導入され、ヘッダassert.hによりstatic_assertが有効となっていた。C23以降は常にstatic_assertとして利用可能となる。またC23からC++17同様に第2引数を省略可能となる。 ↩ C99言語機能では_Thread_localキーワードとして導入され、ヘッダt

    最新C++(C++23)からみた最新C(C23) - Qiita
    mas-higa
    mas-higa 2022/12/09
    "引数リストを明示しない関数宣言の廃止" まだそんなことできたんか!?
  • 米国家安全保障局、CやC++からメモリ安全なプログラミング言語への移行を推奨する文書を公開

    同ガイダンスは、近年のサイバーセキュリティ脅威の多くに利用されている、ソフトウェアのメモリ安全性の悪用を防ぐことを目的としており、組織におけるソフトウェアの開発にあたっては、可能な限りメモリ安全なプログラミング言語を使用するとともに、コンパイラのオプション、ツールのオプション、OS構成といったコードの安全性を高める対策を施すことで、保護を強化することを推奨している。 メモリ安全でないプログラミング言語としては、一般的に使用されているCやC++を挙げており、これらのプログラミング言語はメモリ管理において高い自由度と柔軟性を提供する一方で、メモリ参照が安全に行われているかどうかのチェックはプログラマに大きく依存していると指摘する。 ソフトウェア解析ツールを使用すれば、ソースコード中のメモリ管理における問題の多くを検出できるほか、OSによっては不正なメモリの利用を防ぐオプションも用意されているも

    米国家安全保障局、CやC++からメモリ安全なプログラミング言語への移行を推奨する文書を公開
    mas-higa
    mas-higa 2022/11/16
    C++ ってそんな危険か? / 過去に変なコーディング規約のせいで危険だった現場はあったな。
  • Valgrindの結果の見方、日本語訳、など役に立つことまとめ - 結果だけでなく過程も見てください

    勉強がてらメモ。 適宜更新していこう。うん。 Valgrindって? デバッグやプロファイラなどの複数のツールから構成されるツール群の総称。 メモリリークチェックツールとして有名だと思いますが、 それはValgrindツール群の中のMemcheckというツールによる機能だったのですね。 どんなツールがあるのか?マニュアルを見ると・・・ Memcheck 言わずと入れたメモリエラー検出ツール。特にC/C++に向いている。リークチェックやバッファーオーバーランなどね。 Cachegrind プログラムのキャッシュグラフ、または分岐予測をしてシミュレートする。プログラムを速くするために使うツール。 Callgrind 関数呼び出しをトレースしたりできる。Cachegrindをかぶる部分もあるが、Cachegrindとは別の情報も収集できる。 Helgrind マルチスレッドのプログラム向け。スレ

    Valgrindの結果の見方、日本語訳、など役に立つことまとめ - 結果だけでなく過程も見てください
  • C90, C99, C11, C++98, C++11で異なる動作をするコード | POSTD

    (訳注:2016/9/28、頂きましたフィードバックを元に記事を修正いたしました。) C言語の規格のリビジョン間には微妙な違いがありますが、このことを利用して「C90、C99、C11のどれとしてコンパイルされたかどうかにより、違う挙動をする」というプログラムを作ることが可能です。同様に、C++はほぼC言語の上位互換ですが、C言語とC++で違った結果を生み出すプログラムも存在します。 これは2015年の International Obfuscated C Code Contest (難読Cコード・国際コンテスト)への Don Yangの投稿 において、 C89、C99、C11、C++98、C11のどれとしてコンパイルされるかによって異なる出力を生成するプログラムを作成するのに使われています。C90の場合は、以下のような星形を出力します。 **************************

    C90, C99, C11, C++98, C++11で異なる動作をするコード | POSTD
    mas-higa
    mas-higa 2016/09/27
    R(U) が U"a"[0] に展開されるの直感的じゃないなぁ
  • C言語(C、C++)の仕事に転職するには|エンジニアの求人や転職はスタッフサービス・エンジニアリングへ

    C言語(C、C++)の仕事転職するには C言語にはCの他、C++などなど、さまざまな種類の言語がありますね。C言語はUNIXの開発の中で、B言語を改良して生み出されたものですから、UNIX系の環境で活きる言語として急速に広まりました。組込みチップから大型コンピュータまでプラットフォームの幅が広く、多様なバリエーションが生み出されてきたわけです。 OSをつくるために生まれたものであり、モジュール化がファイル単位でおこなえるなど自由度も高い、基プログラミング言語です。逆に言えば狭い技術分野に最適化された言語ではないわけですが、活躍の場が広いことがC言語の魅力と言えるかもしれません。 C言語が基プログラミング言語として需要が高い一方で、オブジェクト指向の開発について理解することも、その実力を十分に発揮させるために重要な鍵。C++がその役割を担います。これから入門しようという方は、当社社員向

    mas-higa
    mas-higa 2012/02/17
    "C言語にはCの他、C+、C++などなど、さまざまな種類の表記がありますね。" この書き出しは凄い。文学的。続きを読みたくなる。
  • Objective-Cの『遅さ』を計測したら、JavaやC++の5倍も遅かった

    なお、メモリ消費量はtopコマンドで測ったので、かなり大雑把な数字だ。また、Cで同様の処理のコードを書くと、ほぼC++と同じ速度になる。 追記(2011/02/17 8:50):Rubyによるベンチマークを追加。 追記(2011/02/17 11:00):Smalltalkによるベンチマークを追加。ソースコードは「Smalltalkのtは小文字です」のループ回数を修正した。 追記(2011/02/17 16:00):Perlによるベンチマークを追加。 追記(2011/02/18 10:30):Java 1.6.0_22で実行した、Scalaによるベンチマークを追加。また、clang/llvmでC++とObjective Cの値を取り直し、改善が見られないのを確認。 追記(2011/02/18 14:30):Ruby 1.8.7によるベンチマークを追加。1.9.2との速度差については、@IT

    Objective-Cの『遅さ』を計測したら、JavaやC++の5倍も遅かった
  • C言語最大の欠点

    1980年代、筆者が高校生・大学生だったころに「C言語がすごい」という話を友人から聞いていた。しかし、当時の筆者が触れていたのはMSXパソコンのBASICと大学の汎用機のFortranくらいだった。C言語をやっと手に入れたのは、1992年の暮れである。清水の舞台から飛び降りるような気持ちでBorland C++の大箱を買って帰った。 それから20年近くが経過した今でも、C言語は「最強のプログラミング言語」と呼ぶべきポジションを確保し続けている。UNIXオペレーティングシステムとC言語が世界に与えたインパクトの大きさは、実に大きなものがあった。 ただ、C言語を学習したり評価したりする際には、C言語の大きな欠点を知っておく必要があるだろう。筆者が考えるその大きな欠点とは、「文字列の扱いが非常に面倒」であることだ。 「バッファオーバーフロー」を回避するのは大変 例を示そう。図1はC言語で記述した

    C言語最大の欠点
    mas-higa
    mas-higa 2010/10/21
    この内容で書籍の宣伝されても…
  • 1