並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 179件

新着順 人気順

C++言語の検索結果1 - 40 件 / 179件

  • C言語をマスターしたい人はGCCのバージョン14を使いましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -

    C言語(C++を含む)を習得したい人,ポインタを勉強したい人はgcc-14を使いましょう.難しいところは gcc-14 が丁寧に解説してくれます C言語の難しいところ 例を示します.C言語で記述された,たった6行のソースコードです int main() { int buf[10]; buf[10] = 0; return 0; } このソースコードには問題があります.初見でわかるでしょうか? : : : 問題があるのは buf[10]=0 の部分です.C言語でやりがちなミスですが,これがバグやセキュリティホールの原因になります. C言語が難しい理由は二つあります.この手の問題を見逃しやすい点と,この手の問題を理解することが難しい点の二つです gcc 14 に解説してもらいましょう 上記の6行のソースコードをgcc14を使ってコンパイルしてみます ソースコードのファイル名は test.c と

      C言語をマスターしたい人はGCCのバージョン14を使いましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -
    • Mojoは「C言語のように速いPython」なのか - k0kubun's blog

      LLVMやSwiftを作ったChris LattnerがCEOをやっている会社が、Pythonの使用感とC言語並の性能を併せ持つ言語としてMojoをアナウンスした。 まだ手元で試せる状態でリリースされてはいないが、最大35000倍Pythonより速いという。 Mojo🔥 combines the usability of Python with the performance of C, unlocking unparalleled programmability of AI hardware and extensibility of AI models. Also, it's up to 35000x faster than Python 🤯 and … deploys 🏎 pic.twitter.com/tjT09U4F80— Modular (@Modular_AI) May

        Mojoは「C言語のように速いPython」なのか - k0kubun's blog
      • Linuxカーネルで学ぶC言語のマクロ - 覚書

        はじめに 本記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。 #define swap(a, b) \ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) 注目すべきはマクロの定義全体を囲んでいるdo { ... } while (0)という表記です。初見の人には何のことかわからないと思います。考えられる最も単純な定義から遡って、なぜこ

          Linuxカーネルで学ぶC言語のマクロ - 覚書
        • プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!

          僕がプログラミングに触れた当時は、プログラミングといえば「まず C 言語」でした。それから 10 年以上が経ちました。学校の授業や企業の研修では未だに C 言語を教えているところがあるようです。関数型プログラミング言語という波が来ている 2012 年にもなって未だに C 言語をやっているというのはまるで進歩が無く残念な気もしますが、比較的多くのプログラマに浸透している共通言語を最初に教えるというのは、一方では喜ばしい事だと解釈する事もできるのかもしれません*1。まぁとにかく、本意にせよ不本意にせよ現場で プログラム初心者に C 言語を教える羽目になった 人がたくさんいて、プログラム初心者なのに C 言語を学ばざるを得なくなった 若者がたくさんいるということです。 C 言語を教えるときに避けて通れないのがポインタで、プログラム初心者が C 言語を学ぶときにやたらとつまずく人が多いのがポインタ

            プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!
          • 授業課題でC言語の謎のエラーに困っていた→社会人大学院生(元金融SE)が、スペースを11個ほど追加してあげたらエラーが消えた!どういうこと?

            服さん @fukusanity 修士の頃、授業の課題でC言語書いてる時にどうしても謎のエラーが出て困っていた。それを見たSE経験(金融系)がある社会人大学院生の同期の女性が「ここにスペースを入れてみて」「もっと沢山、もっともっと」と言い出して、スペースを11個ほどコードに挟み込んだらエラーが消えた。怖かった 2020-02-21 00:45:53 服さん @fukusanity 驚いて「なんでこんなことになるんですか」「ていうかなんでわかったんですか」と聞いたけど「まあなんとなく」「勘」などと言ってはぐらかされた。「目で見てメモリダンプがわかる」みたいな話を聞くと彼女のことを思い出す。言語化できない知見で計算機の息遣いを察する能力は側から見ると霊感に近い 2020-02-21 00:45:54 服さん @fukusanity 彼女は当時参加してた研究のメンバーだったので共著で論文を書いたり

              授業課題でC言語の謎のエラーに困っていた→社会人大学院生(元金融SE)が、スペースを11個ほど追加してあげたらエラーが消えた!どういうこと?
            • なぜC言語は、B言語を継承して、1から設計し直さなかったのでしょうか?

              回答 (3件中の1件目) なかなか理解しづらい話だと思いますが、当時のベル研究所において、Unixのグループは濃密な知のルツボだったのです。B言語が発明されるとすぐに、十数人の人々が使い始め、良かったところと悪かったところのフィードバックが集まりました。デニスは数日後にはインタプリタ言語だったB言語をコンパイラ化し、古いバージョンを分かりやすいところに置いていました。B言語のユーザーは、バグを見つけるとデニスにメールし、バグが直るまで古いコンパイラを使っていました。 B言語をC言語に改名した主な理由は2つあります。まずB言語(とBCPL)は、CPUのアドレスがバイト単位ではなくてワード...

                なぜC言語は、B言語を継承して、1から設計し直さなかったのでしょうか?
              • Rustこそがシステムプログラミングの未来(で、C言語はもはやアセンブリ相当)なら、Rustで書かれたドライバのコードをLinuxカーネルは受け入れるべきなのか? - YAMDAS現更新履歴

                Intel の主席エンジニアの Josh Triplett の Open Source Technology Summit 2019 での講演 Intel and Rust: the Future of Systems Programming を取り上げ、Rust こそがシステムプログラミングの未来であり、C 言語はもはやかつてのアセンブリ言語である。つまり、未だに OS などのシステムプログラミングの大部分で使われる C 言語は Rust に置き換えられるのではないかと見る記事である。 「Cを愛して…」という文章をワタシが訳したのももはや10年以上前、C が他言語に置き換えられる未来が遂に来るのかと遠い目になってしまう。もっともワタシ自身、4年近く C 言語でコーディングしてないんだよね……。 でも、本当にそうなるのだろうか? 手近なシステムプログラミングの現場である Linux カーネ

                  Rustこそがシステムプログラミングの未来(で、C言語はもはやアセンブリ相当)なら、Rustで書かれたドライバのコードをLinuxカーネルは受け入れるべきなのか? - YAMDAS現更新履歴
                • 高速なPython互換言語「Mojo」のMac版登場、Appleシリコンにネイティブ対応。Pythonの9万倍、C言語に比肩する高速性

                  高速なPython互換言語「Mojo」のMac版登場、Appleシリコンにネイティブ対応。Pythonの9万倍、C言語に比肩する高速性 Modular社はPythonの高速なスーパーセットと同社が位置づける開発中の新言語「Mojo」の、Appleシリコンにネイティブ対応したMac版をリリースしました。 Today is the day! Mojo for Mac is live! Download it right now! Read our launch blogpost on how to get startedhttps://t.co/XSMkqUmHKt — Modular (@Modular_AI) October 19, 2023 Mojoは9月に初めてローカル環境でコンパイルなどを実行可能なLinux対応のツール群を公開しています。今回のAppleシリコンにネイティブ対応した

                    高速なPython互換言語「Mojo」のMac版登場、Appleシリコンにネイティブ対応。Pythonの9万倍、C言語に比肩する高速性
                  • C言語でSQLiteのクローンを作るチュートリアルやった - valid,invalid

                    2019年12月の冬休みに1週間程かけて"Let's Build a Simple Database"という、C言語でSQLiteのクローンを作るチュートリアルをやりました。この存在を教えてくれた同僚に感謝 :pray: cstack.github.io チュートリアルの内容 Richard Feynman先生の“What I cannot create, I do not understand.”という言葉が掲げられているように、データベースを作ることでデータベースをより深く理解することに主眼が置かれているチュートリアルです。 これは重要事項説明かつタイトル詐欺に関する謝罪なのですが… 残念ながらこのチュートリアルは完成しておらず、Part 13が2017-11-26に公開されたのを最後に更新が止まってしまっており、以下の13章しかありません。 Part 1 - Introduction

                      C言語でSQLiteのクローンを作るチュートリアルやった - valid,invalid
                    • 電子回路設計&プログラミングシム『Shortcuit』Steamにて体験版配信。Arduino風マイコンとC++言語でバーチャル実験 - AUTOMATON

                      『Shortcuit』は、プログラミング言語C++と電子工学を学ぶことができる学習用サンドボックスゲームだ。オープンソースで提供されているワンボードマイコンArduinoがゲーム内に再現されており、組み上げたコンポーネントの動作を、C++にてプログラムすることができる。 マイコンボードには、Arduino UnoをシミュレートしたShortcuit Unoが実装。このほか、ブレッドボードやトランジスタ(BC550C)、抵抗器(E12・ポテンショメータ)、ダイオード(1N4148)、超音波距離測定センサー、また各種スイッチやモーター、LED、液晶ディスプレイ、バッテリーなどのパーツが用意される。 そしてプログラミングは、本作に実装されたコードエディタを使いC++にておこなう。エディタには、基本的なオートコンプリート機能や出力ウィンドウ、プログラムの検証に使えるシリアルモニターも用意。なおコン

                        電子回路設計&プログラミングシム『Shortcuit』Steamにて体験版配信。Arduino風マイコンとC++言語でバーチャル実験 - AUTOMATON
                      • C言語から0番地へアクセスする方法についての個人的まとめ - /var/log/hikalium

                        発端はuchan_nos氏によるこのツイートでした。 C言語で、本当にメモリの0番地にデータを書きたいときはどうすりゃええの?— うー@技術書典8 Day1う31 BitNOS (@uchan_nos) 2020年2月12日 それに対する私のリプライ: uint8_t *p = 1; p--; *p = v;— hikalium (@hikalium) 2020年2月12日 私はこれで話が終わると思っていたのだが、どうやらそうではなかったらしく、色々な視点からの意見が加わりながら、話は混沌を極めたのでした…。 ということで、ここに私のこのツイートに対しての見解とか、わかったことをまとめておこうと思います。 私のリプライの背景について uchanさんが求める「0番地にデータを書きたい」という課題設定を、私はこのように解釈しました。 C言語において、整数0をポインタに変換すると、それはNULL

                          C言語から0番地へアクセスする方法についての個人的まとめ - /var/log/hikalium
                        • Z80+C言語で16ビット機級の本格的なゲームが創れるゲーム機(VGS-Zero)を作ってみた - Qiita

                          はじめに 2024年1月1日に VGS-Zero (Video Game System - Zero) という RaspberryPi Zero 2W のベアメタル環境で動作するオリジナルのゲーム機エミュレータと SDK を公開しました。 VGS-Zero は、RaspberryPi Zero 2W をテレビに HDMI ケーブルで接続し、USB ゲームパッドで遊ぶタイプ(据え置き型)の新しいゲーム機です。 無料でゲームを開発&販売ができる SDK も公開していて、開発したゲームを完全ロイヤリティフリーで自由に販売して頂くことができます。 なお、OS は Linux ではなく独自カーネルです。 特徴 VGS-Zero の特徴について、カーネル視点とゲーム機視点の両面から解説します。 独自カーネルの特徴 ラズパイ全般(※Picoを除く)は Linux で動かすのが一般的ですが、VGS-Zer

                            Z80+C言語で16ビット機級の本格的なゲームが創れるゲーム機(VGS-Zero)を作ってみた - Qiita
                          • 世界のプログラミング言語(47) PythonのようにシンプルでC言語のように高速な言語Nimを試してみよう

                            NimはPythonのようにシンプルな構文を持ちながら、C言語と同等の速度で動かすことができるプログラミング言語です。そのため、ゲーム開発からシステムプログラミング、Web開発とさまざまな用途で活用されています。今回は、効率性と表現力が魅力のNim言語の魅力に迫ってみましょう。 シンプルな構文を持ち実行速度が速いNimでFizzBuzzを実行したところ Nimとは Nimは2008年にドイツの開発者アンドレアス・ランプフによって開発されたプログラミング言語です。最初のNimはPascalによって書かれており、その後すぐにNim自身で書き直されました。 Nimの特徴は、Pythonのようにスッキリとした構文を採用しており可読性が高いことです。型推論を備えていることから静的型付き言語ながら記述が少なくすみます。また、強力なマクロとテンプレートの機構を備えており、メタプログラミングが可能です。

                              世界のプログラミング言語(47) PythonのようにシンプルでC言語のように高速な言語Nimを試してみよう
                            • 「C++Builder」誕生から四半世紀、「C++Builder 1」が無料でダウンロード可能に/C++言語によるGUIアプリ開発に革命を起こした歴史的ソフト

                                「C++Builder」誕生から四半世紀、「C++Builder 1」が無料でダウンロード可能に/C++言語によるGUIアプリ開発に革命を起こした歴史的ソフト
                              • これを知らなければ、C++プログラマを名乗れない。ITエンジニアも驚いた「C言語」の配列の仕組み→「初めて知った」「配列へのアクセスの書き方が糖衣構文」

                                二項しいぷ @BinomialSheep C++の「す、すげーー!!そんなことすなーっ!!!!!!」シリーズ 『プログラミング言語C++ 第4版/ストラウストラップ』 pic.twitter.com/KjiDaXe0tj x.com/winter_kyopro/… 2024-06-21 23:42:32

                                  これを知らなければ、C++プログラマを名乗れない。ITエンジニアも驚いた「C言語」の配列の仕組み→「初めて知った」「配列へのアクセスの書き方が糖衣構文」
                                • C++言語によるお嬢様コーディングがブームの兆し!?/「こちらのmain様は何もお受け取りにならず代わりにintをお返しになる関数でして……」【やじうまの杜】

                                    C++言語によるお嬢様コーディングがブームの兆し!?/「こちらのmain様は何もお受け取りにならず代わりにintをお返しになる関数でして……」【やじうまの杜】
                                  • C言語向けコルーチン非同期 I/O ライブラリ neco を使ってみた。

                                    はじめに C言語でコルーチンを扱う方法は色々ありますが、専用の命令を専用の記述方法で実装しなければならなかったりなど、あまりとっつきやすいものではありませんでした。 今日 X/Twitter のタイムラインで見付けた neco はまさにそんな悩みを解消できる物でした。 neco とは neco はコルーチンを使った非同期 I/O ライブラリです。 コルーチン: 開始、スリープ、一時停止、再開、移譲、および結合。 同期: チャネル、ジェネレータ、ミューテックス、条件変数、および待機グループ。 デッドラインとキャンセルのサポート。 ファイルディスクリプタを使った Posix フレンドリーなインターフェース。 ネットワーク、シグナル、ランダムデータ、ストリーム、およびバッファ付き I/O の追加 API。 公正かつ決定論的なスケジューラを備えた軽量ランタイム。 高速なユーザースペースのコンテキス

                                      C言語向けコルーチン非同期 I/O ライブラリ neco を使ってみた。
                                    • 最近のC言語と、次期C標準(C23)

                                      C言語といえば古い言語なイメージですが、その重要性はまだまだ落ちていません(多分)。重要な言語だからこそ、今もひっそりと進化を続けています。この記事では、そんなC言語の最近の動向を紹介します。 まずはC言語の前世紀の標準であるC99、現行の標準であるC11/C17を振り返り、その後に未来の標準であるC23に触れます。 C99 C99では色々追加されました。ここでは一部のみの紹介とします。 _Bool _Complex C++の std::complex とメモリ上での互換性がある(C++11以降)。 可変長配列(VLA) 可変長引数マクロ 浮動小数点数の強化 十六進表記 筆者による関連記事:浮動小数点数の16進表記 fma 筆者による関連記事:FMA (fused multiply-add) の話 #pragma STDC FENV_ACCESS, #pragma STDC CX_LIMI

                                        最近のC言語と、次期C標準(C23)
                                      • 20年物のC言語で作られたシステムのテスト工程を改善しようとした話 - Qiita

                                        はじめに ちょっと前に20年物のC言語で作られたシステムのテストを色々改善しようとしてみたので、この時に得たちょっとした知見を書いていこうと思います。 ※注意 記事を書くために自分のパソコンで当時を思い出しながら環境を作っているので、実際、実務でやった環境やバージョンとは違います。 また、この記事にはいくつかコードがでてきますが、すべて記事を書くために考えた疑似的な例にすぎません。 単体テスト用のテストコードの作成 20年も動いているシステムだと、もはや誰にも意味はわからんが、既存の挙動を変えてはいけない箇所がいくつもあります。 そういう箇所に手を入れざるを得ないときに、有効な方法として以下のような方法があります。 まず、既存のコードに対するテストコードを記載します。そして全て合格することを確認してから、少しづつ機能を拡張していきます。 これにより、新規機能追加が既存の機能を壊していないこ

                                          20年物のC言語で作られたシステムのテスト工程を改善しようとした話 - Qiita
                                        • Rust言語で自然にWindows Runtimeが扱える ~Microsoft、「Rust/WinRT」をプレビュー公開/C/C++言語の代替として期待

                                            Rust言語で自然にWindows Runtimeが扱える ~Microsoft、「Rust/WinRT」をプレビュー公開/C/C++言語の代替として期待
                                          • C言語でWASMインタプリタを実装した話

                                            概要 公式のcore testが全て(UTF8, WAT, SIMD関連のものは除く)通るWASMインタプリタをC言語でフルスクラッチで実装した。自作WASMランタイムで省略されがちなValidation Stageも実装した。この記事はWebAssembly Advent Calendar 2023の三日目の記事である。 目的 このWASMランタイムを実装するにあたり、「できるだけ仕様に従って実装する」ことを心掛けた。WASMの仕様書は以下のissueが立つほど読みにくいものとなっているが、ランタイムをどのように実装すべきかが詳しく書いてあり、一応仕様書を頑張って読めばランタイムが作れるようになっている。 この自作WASMランタイムの目的は、できるだけ仕様に従った実装を与えることで、仕様の理解を助けることである。早さや効率性よりも分かりやすさを優先しているため、実用には向かない。仕様書を

                                              C言語でWASMインタプリタを実装した話
                                            • C言語を学ぶメリット・デメリットと学習を進めるおすすめ本・サイトを紹介 | AKKODiS(アコーディス)コンサルティング株式会社

                                              C言語は、学習難易度の高い言語といわれています。そのため、C言語の学習を始める前からハードルの高さを感じている方も多いでしょう。しかし、C言語は学ぶメリットが非常に大きい言語の一つでもあるのです。本記事では、そんなC言語を学習するメリット・デメリット、C言語の学習に向いている人・向いていない人について解説します。 また、C言語の学習をさらに進めたい人におすすめの本や学習サイトもまとめました。より一層、C言語について深く学びたい人は、ぜひ最後までご覧ください。

                                                C言語を学ぶメリット・デメリットと学習を進めるおすすめ本・サイトを紹介 | AKKODiS(アコーディス)コンサルティング株式会社
                                              • プログラミングが難しくなったのはなぜか、原因はC言語のあの記法?

                                                プログラミングを全くしたことのない人がプログラミングの学習を始めた場合、どこでつまずくかを考えることがよくある。小学校でプログラミング教育が始まったこともあり、プログラマー以外の人も少しはプログラミングを知っておいたほうがいいと思うからだ。 初心者がつまずく場所としてよく聞くのが「繰り返し」だ。プログラミングには、処理の流れを制御する構文として、主に「条件分岐」と繰り返しの2つがある。初心者にとって、条件分岐は理解しやすいが、繰り返しは理解が難しいのだという。 たしかに日常生活の中でも「条件によってやることを変える」という場面は多い。プログラミングを知らない人でも普段から慣れている考え方だろう。 これに対し、プログラミングにおける繰り返しは、同じことを繰り返す場合もあるが、たいていは「ルールに従って値を連続的に変えながら処理を繰り返す」というものになる。日常生活では、同じ作業を繰り返すこと

                                                  プログラミングが難しくなったのはなぜか、原因はC言語のあの記法?
                                                • C言語で0からニューラルネットワークを自作してみた - Qiita

                                                  2023/06/23追記: 頂いたコメントを元にコードを修正しました。主に直した点は下記の通りです。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 1.静的なメモリを用いることでMNIST全てを用いて学習が行えるようにしました。 (通常のメモリだとオーバーフローしてしまいますが、静的にメモリを取ることで大容量のデータを扱えるようになりました) 2.変数の初期化を明示しました。 3.正解率の求め方を改めました(間違った計算をしていました) その他軽微なミスを修正しました。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー こんにちにゃんです。 水色桜(みずいろさくら)です。 今回はC言語を用いてニューラルネットワークを自作して、MNISTを分類してみようと思います。 今回作成したモデルの精度を以下に示します。 10回の学習で55.0%の精度を達

                                                    C言語で0からニューラルネットワークを自作してみた - Qiita
                                                  • SEC BOOKS:ESCR C++ Ver. 2.0:【改訂版】組込みソフトウェア開発向けコーディング作法ガイド[C++言語版] Ver. 2.0:IPA 独立行政法人 情報処理推進機構

                                                    HOME社会基盤センター報告書・書籍・ツール・教材書籍SEC BOOKS:ESCR C++ Ver. 2.0:【改訂版】組込みソフトウェア開発向けコーディング作法ガイド[C++言語版] Ver. 2.0 SEC BOOKS:ESCR C++ Ver. 2.0:【改訂版】組込みソフトウェア開発向けコーディング作法ガイド[C++言語版] Ver. 2.0

                                                    • 23歳文系で今更セキュリティエンジニアになりたいと本気で思いました。PCについては何も分かりません。始めたC言語も難しいです。一日中勉強すべきですか?何から始めればいいですか…諦めた方がいいですか?

                                                      回答 (16件中の1件目) いろいろ気になった質問だったので、回答したいと思います。(長文となりますこと、ご容赦ください。) 「23歳文系で今更セキュリティエンジニアになりたいと本気で思いました。」とありますが、23歳でそのような気持ちになられたことが素晴らしいです。(私はその当時はただ流されるまま就職できるところに就職して、ただ会社員になってましたので。。。) なので、今更ではないと思いますので、頑張ってください。 あと、「諦めた方がいいですか?」という質問には、きっと誰も回答してくれないと思いますし、書かないほうが良いと思います。 なぜなら、その人がどのような職につきたいのか...

                                                        23歳文系で今更セキュリティエンジニアになりたいと本気で思いました。PCについては何も分かりません。始めたC言語も難しいです。一日中勉強すべきですか?何から始めればいいですか…諦めた方がいいですか?
                                                      • mrubyを採用したソフトウェアを広げた第一人者・松本亮介が、面倒を感じながらもC言語を愛する理由とは? | Offers Magazine

                                                        C言語は冗長なんだけど、なんか好き さっそくですが、松本さんが好きなプログラミング言語を教えてください。 今はC言語をよく使うんですけど、C言語そのものが好きなのか、手に馴染んでいるから好きなのか、もはやわからない状況になっていますね。この状況を一般的に好きって言うでしょうけど。 ただ、僕にはそれほど言語へのこだわりがないんです。そもそも昔からプログラミング言語を網羅的に学習するのが苦手で。まず作りたいものがあって、次にどの言語がベストかを考えるようにしていました。 そうすると、C言語に初めて触れたのはいつだったんですか? 今、僕は36歳で、大学に入ってから書いているので15年ぐらい前ですね。 当時はWindows95が発売され、自宅でもようやくPCが買えるようになった時代でした。ただ、それから数年経って、購入したPCだとスペック的に満足いくものがなかったので、自作していたんです。そうする

                                                          mrubyを採用したソフトウェアを広げた第一人者・松本亮介が、面倒を感じながらもC言語を愛する理由とは? | Offers Magazine
                                                        • C / C++ 言語のswitch文を最適化 (テーブルジャンプが使われるようにする) - 人生に疲れた男のblog

                                                          先に概要を書くと caseの値は連番かつ昇順(上から小さい数で下に行くほど増えていく)となるように心がける。ある程度caseが多ければあとは勝手にコンパイラがテーブルジャンプ最適化を行う。 goto文やreturn文などでswitch文途中から抜けないようにする。あるとテーブルジャンプ最適化が行われない。 MSVC(Visual Studio)でコンパイルする場合、default:の箇所に__assume(0);と記述すれば上記二つを無視して強制的にテーブルジャンプ最適化が行われる。ただし、goto・return等でのswitch抜けがあるまま実行すると例外エラーが発生する。 追記:上記の__assume(0)はC++23から「std::unreachable()」で標準化 FM TOWNSエミュレータ「津軽」を弄っていて、どうもエミュレーターの実行速度が既にあるTOWNSエミュレータの「

                                                            C / C++ 言語のswitch文を最適化 (テーブルジャンプが使われるようにする) - 人生に疲れた男のblog
                                                          • 「Visual Studio 2022」にC++言語のクラスや構造体のメモリレイアウトを視覚化する機能/v17.9 Preview 1でテスト中

                                                              「Visual Studio 2022」にC++言語のクラスや構造体のメモリレイアウトを視覚化する機能/v17.9 Preview 1でテスト中
                                                            • MS-DOS(PC-98)のアプリケーションをC言語で作る - 少ないリソースを酷使する

                                                              前回の記事でPC-98エミュ+FreeDOSの環境でMS-DOSアプリが動くことを確認した. となると,あと思うことは1つ. MS-DOSのアプリケーションを自作したい! ということです. 今回はC言語でMS-DOSのアプリケーションを作ってみましょう. 環境 OS:Ubuntu 20.04 PC-98エミュ:xnp2kai rev.22 d3fe02a FreeDOS(98):20200709更新のHDI形式 Cコンパイラのinstall i8086版GCC フリーのCコンパイラと言えばGCC.便利ですよね. しかし,少し前までGCCは32bit || 64bitのアーキテクチャしかターゲットにしてきませんでした. なので16bitのPC-98x1向けのバイナリは生成できなかったわけなんですよね. それが最近,ついに16ビット版GCCが登場しました.しかもDOS環境特化. 詳しい話は以下

                                                                MS-DOS(PC-98)のアプリケーションをC言語で作る - 少ないリソースを酷使する
                                                              • Google、「Android Game Development Kit」を発表/C/C++言語ライブラリの提供で断片化を削減しつつ、ゲームを加速。Androidのパワーを引き出す

                                                                  Google、「Android Game Development Kit」を発表/C/C++言語ライブラリの提供で断片化を削減しつつ、ゲームを加速。Androidのパワーを引き出す
                                                                • C言語で16文字でセグフォらせる - Qiita

                                                                  ↓PythonをSegmentation Faultで落とすのが最近流行っているようなので。 pythonを三行でセグフォらせる pythonを2行でセグフォらせる pythonを1行でセグフォらせる Pythonを33文字でセグフォらせる Pythonをctypesを使わずに1行でセグフォらせる Rustを5行でセグフォらせる 主語(Python)をC言語に変えるだけで途端につまらなくなりますが、やってることは同じです。 コード gcc 10.1.0で動作確認(警告は出ます) > gcc segf.c segf.c:3:4: 警告: データ定義が型または記憶域クラスを持っていません 3 | *a;main(){*a=0;} | ^ segf.c:3:5: 警告: 型がデフォルトの ‘int’ に ‘a’ の宣言内でなります [-Wimplicit-int] 3 | *a;main(){*

                                                                    C言語で16文字でセグフォらせる - Qiita
                                                                  • C言語、Java言語、Go言語、Rust言語……

                                                                    人間の言葉は「イングリッシュ語」「ジャパニーズ語」と書いたらおかしいと誰でも理解できるのに、プログラミング言語に「言語」をつけるとおかしいというのを理解できる人がめったにいないのはなぜなのか。

                                                                      C言語、Java言語、Go言語、Rust言語……
                                                                    • C言語へのFFIを含むRustをWASM化するのは難しすぎる

                                                                      つらみ PlantUMLをwasm化するためにGraphvizへの依存をどうしたものか考えていました。すべてRustで書き直せればそれがいちばん手堅いのですが、Graphvizのソースコードは中々に大きく、それをRustで書き直すのは現実的ではありません。そこで考えたのが、RustからFFIでGrapvizのC++コードを呼ぶようにして、それをwasm化すればいいじゃないかというアイデアです。 こんなことを言いましたがツラい・・・この道はツラいです。もう諦めようと思っています。私の力では限界を感じました。 というわけで、やり散らかしたままにしておいても時間の無駄になるので何らか学びを得るためにまとめてみようと思います。 RustでCのライブラリにFFIするのは簡単だ RustはそもそもFFIの機構を持っている Rustはにはexternキーワードがあり、以下のようにC言語の関数をRustか

                                                                        C言語へのFFIを含むRustをWASM化するのは難しすぎる
                                                                      • C言語のアロー演算子ってどこまで繋げられるんだろうか | DevelopersIO

                                                                        #include<stdio.h> #include<stdlib.h> struct PointerLimit{ struct PointerLimit* next; int value; } typedef PointerLimit; PointerLimit* getTail(PointerLimit* base){ while(base->next != NULL){ base = base->next; } return base; } PointerLimit* add(PointerLimit* base, int value){ PointerLimit* new = (PointerLimit*)malloc(sizeof(PointerLimit)); new->value = value; new->next = NULL; PointerLimit* tail =

                                                                          C言語のアロー演算子ってどこまで繋げられるんだろうか | DevelopersIO
                                                                        • なぜRustはメモリ安全なのかをC言語のコードと考える - Qiita

                                                                          追記: Twitterなどでご指摘等いただいているのをコメントしてますので、ぜひそちらもご覧ください! これはなに 絶賛Rust勉強中の僕が、「なんでRustはメモリ安全って言われているの?」と聞かれたので、実際にメモリ安全ではない(?)C言語のコードを並べてみて考える記事です。 C言語の場合 メモリリーク 以下のコードはメモリリークを起こす可能性があります。 #include <stdio.h> #include <stdlib.h> #define STR_BUF_SIZE 100000000 char *str_new() { return calloc(STR_BUF_SIZE, sizeof(char)); } int main() { for (int i = 0; i < 100000000; i++) { char *str = str_new(); snprintf(st

                                                                            なぜRustはメモリ安全なのかをC言語のコードと考える - Qiita
                                                                          • C言語のないプログラミング

                                                                            大昔のプログラミングとかさ、どうやってたの まじで全部機械語なの? 機械語の値をメモリに打ち込んで動かしてたの? UI表示とか1ドットずつ表示させないといけないんじゃないの? 人の力じゃどうしようもなくない? ぜんぜん想像つかないんだけど anond:20210420103403

                                                                              C言語のないプログラミング
                                                                            • メガドライブ相当のゲームをC言語のみで自作可能なOSSのゲーム機「VGS-Zero」

                                                                              個人サークル「SUZUKI PLAN」がゲーム機エミュレーターおよびSDKの「Video Game System - Zero(VGS-Zero)」を2024年1月1日に公開しました。VGS-ZeroはRaspberry Pi Zero 2 Wのベアメタル環境で動作し、メガドライブ相当のゲームを動作させられるとのことです。 GitHub - suzukiplan/vgszero: SUZUKI PLAN - Video Game System Zero https://github.com/suzukiplan/vgszero Z80+C言語で16ビット機級の本格的なゲームが創れるゲーム機(VGS-Zero)を作ってみた #RaspberryPi - Qiita https://qiita.com/suzukiplan/items/8a740b593816ef9ef565 VGS-Zero

                                                                                メガドライブ相当のゲームをC言語のみで自作可能なOSSのゲーム機「VGS-Zero」
                                                                              • RISC-VでC言語のポインターを理解する! ポインターの動作と処理を詳細に解説した書籍が発売/『RISC-Vから学ぶC言語 ポインタ理解のためのアセンブリ入門』【Book Watch/ニュース】

                                                                                  RISC-VでC言語のポインターを理解する! ポインターの動作と処理を詳細に解説した書籍が発売/『RISC-Vから学ぶC言語 ポインタ理解のためのアセンブリ入門』【Book Watch/ニュース】
                                                                                • 【サンプル有】C言語とは?特徴やできることなどを解説! | IT・エンジニア派遣のModis

                                                                                  C言語は歴史が古く、プログラミング言語の中でも非常に知名度の高い言語の一つです。また、C系言語と呼ばれる派生言語の始祖でもあり、コンピュータを使用して行うことの大半はC言語で実行できるといわれるほど高い汎用性を持っています。プログラムの自由度が非常に高く、アプリの開発から機械制御まで幅広い分野で活用されている点が特徴です。 C言語はハードウェアの制御知識を必要とする面があるため、初心者にはハードルの高い言語ではありますが、その汎用性の高さからいまだ衰えない需要と人気があります。今回はC言語の概要や特徴、基礎知識とサンプルを解説していきます。 C言語とは? C言語の歴史 C言語は、AT&Tベル研究所のケン・トンプソン氏が開発したB言語の改良として、同所のデニス・リッチー氏が主体となって開発した汎用プログラミング言語です。 UNIX(ユニックス)(コンピュータ用のマルチタスク・マルチユーザーの

                                                                                    【サンプル有】C言語とは?特徴やできることなどを解説! | IT・エンジニア派遣のModis