並び順

ブックマーク数

期間指定

  • から
  • まで

641 - 680 件 / 691件

新着順 人気順

cppの検索結果641 - 680 件 / 691件

  • ちょっと裏技っぽいC++でのMessagePackの作り方

    この記事はSafie Engineers' Blog! Advent Calendar17日目の記事です。 はじめに こんにちは、セーフィーの画像認識エンジニアの木村(勇)です。 セーフィーのエッジAI搭載カメラで動作するアプリケーションの開発を行っています。このアプリケーションの実装ではC++が使われているのですが、サーバーとのデータやりとりでMessagePackというシリアライズの形式を使う機会が発生しました。 案外実用的な情報がなく意外と苦戦したポイントも多かったので、実際に行った手法(あまり正攻法じゃなさそうな)を共有したいと思います。 MessagePackとは 基本的にはJsonのような通信データのシリアライズの形式ですが、Jsonより早くてコンパクトです。さまざまな言語でサポートされており、それらでデータを交換することが可能となります。 導入 MessagePackはこちら

      ちょっと裏技っぽいC++でのMessagePackの作り方
    • C++ exceptions under the hood

      Index A tiny ABI An ABI to appease the linker Catching what you throw Magic around __cxa_begin_catch and __cxa_end_catch Gcc_except_table and the personality function A nice personality Two-phase handling Catching our first exception _Unwind_ and call frame info Reading a CFI table And suddenly, reflexion in C++ Setting the context for a landing pad Multiple landing pads & the teachings of the gur

        C++ exceptions under the hood
      • 最小限の分割 - 苦しんで覚えるC言語

        これまでプログラムを記述する時には、エディタのウィンドウに書き込んできましたが、 その時、常に1つの画面の中にすべてのプログラムを記述してきました。 つまり、1つのファイルの中にすべてのプログラムを記述してきたことを意味します。 この方法は単純なので、規模の小さなプログラムでは有効な方法です。 しかし、規模が大きなプログラムでは、1つのファイルにすべてを書き込んでいると、 どこにどのプログラムがあるのかがわかりにくくなります。 さらに、何人かで1つのプログラムを作ろうとする場合には、 1つのファイルに2人以上の人が同時に書き込むことは基本的に不可能なので、 2人以上でのプログラミングは事実上不可能になってしまいます。 この問題の解決には、複数のファイルに分割してプログラムを書く必要があります。 複数のファイルに分割することで、どこにどのプログラムがあるのかわかりやすくなり、 また、何人かで

          最小限の分割 - 苦しんで覚えるC言語
        • Fun with conversion-operator name lookup

          As of this writing (but perhaps not for very much longer!) the four mainstream compilers on Godbolt Compiler Explorer give four different answers for this simple C++ program: struct A { using T = T1; using U = U1; operator U1 T1::*(); operator U1 T2::*(); operator U2 T1::*(); operator U2 T2::*(); }; inline auto which(U1 T1::*) { return "gcc"; } inline auto which(U1 T2::*) { return "icc"; } inline

          • GitHub - randombit/botan: Cryptography Toolkit

            You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

              GitHub - randombit/botan: Cryptography Toolkit
            • お待たせしました!AI, C#, C++チャンネルのエキスパートモードをフル実装しました!

              こんにちは。テックフィードの神田です。 TechFeed Proバージョンアップ(15.2.4)のお知らせです😁✨ AIチャンネルC#チャンネルC++チャンネル上記のチャンネルについては、エキスパートモードの品質を改善し、より「ハイレベルで濃い情報」を、より「リアルタイム」で得られるようになりました。 これまでエキスパートフォローをしていなかった方も、ぜひ一度お試しくださいませ😊🎶 エキスパートモードとは?TechFeed Proのエキスパートモードについて補足しますと、TechFeed Proでは、180以上ある専門チャンネルを2つのモードでフォローすることができます。 トレンドモード・・・「トレンドのみ追っておきたい」という要望に応えるモードエキスパートモード・・・海外情報も含め、中上級者向けの情報のみ得られるモード今回「フル実装」されたことで、エキスパートモードの品質が更に向上

                お待たせしました!AI, C#, C++チャンネルのエキスパートモードをフル実装しました!
              • [C++]特殊化?実体化??インスタンス化???明示的????部分的????? - 地面を見下ろす少年の足蹴にされる私

                C++のテンプレートの用語は日本語に優しくなく、似た言葉がこんがらがってよく分からなくなります。分からないのでメモしておきます。 特殊化(specialization) 明示的特殊化(explicit specialization) 完全特殊化 部分特殊化(partial specialization) プライマリテンプレート(primary template) インスタンス化(実体化:instantiation) 明示的インスタンス化(explicit instantiation) 明示的インスタンス化の定義と宣言 参考文献 謝辞 特殊化(specialization) 単に特殊化と言ったら、あるテンプレートに対してそのテンプレート引数を全て埋めた状態のものをさします。つまり、テンプレートを使った時、その使っている(もはやテンプレートではない)テンプレートのことをテンプレートの特殊化と呼

                  [C++]特殊化?実体化??インスタンス化???明示的????部分的????? - 地面を見下ろす少年の足蹴にされる私
                • LLVM/Clang Can Work Fine As A GCC Replacement For Linux Distributions - Phoronix

                  LLVM/Clang Can Work Fine As A GCC Replacement For Linux Distributions Written by Michael Larabel in LLVM on 5 February 2024 at 06:57 AM EST. 43 Comments While the performance of LLVM/Clang is on-par with GCC these days on both x86_64 and AArch64 and the C/C++ support is very robust compared to many years ago, most Linux distributions continue using the GCC compiler and GNU toolchain by default. Op

                    LLVM/Clang Can Work Fine As A GCC Replacement For Linux Distributions - Phoronix
                  • メモリ領域の再利用は結構気を付けたほうがよい件 - Qiita

                    おことわり この記事で言及する C++ 規格はすべて、C++20 相当のドラフト N4861 (PDF/HTML) を基準にしています。 はじめに 私が書いている C++ プログラムでは、処理の途中経過や結果を格納するためのメモリ領域を必要に応じて再利用しています。 一般的には処理の先頭で必要なぶんのメモリを確保し、処理の末尾で解放するわけですが、メモリの確保・解放にかかるコストと処理の粒度を勘案し、再利用するほうが効率的だと判断するときがあります。 // メモリ領域を再利用するイメージ void reuse_storage() { // この記事において pointer のアドレスは各オブジェクトに必要なアライメントを満たしているとする auto pointer = operator new(1024); // メモリ領域を std::string に利用 auto str = new

                      メモリ領域の再利用は結構気を付けたほうがよい件 - Qiita
                    • delete this の安全性 -

                      メンバー向けトレーニングネタその1。delete this は危険に見えるが何を削除しているのか確認する。 class ClassA { public: void del() { delete this; } }; int main() { ClassA* ptr = new ClassA(); ptr->del(); // ダメな例 // ClassA test; // test.del(); return 0; } (gdb) b ClassA::del Breakpoint 1 at 0x4006aa: file test.cc, line 6. (gdb) run Breakpoint 1, ClassA::del (this=0x602010) at test.cc:6 6 delete this; ようするに、削除されるのはオブジェクトの管理領域 (0x602010) であって

                        delete this の安全性 -
                      • Arena allocator tips and tricks

                        This article was discussed on Hacker News. Over the past year I’ve refined my approach to arena allocation. With practice, it’s effective, simple, and fast; typically as easy to use as garbage collection but without the costs. Depending on need, an allocator can weigh just 7–25 lines of code — perfect when lacking a runtime. With the core details of my own technique settled, now is a good time to

                        • Memory Safety without Lifetime Parameters

                          1 Abstract This proposal describes the implementation of a memory-safe reference type that does not use lifetime annotations. The goal of the proposal is to: Explore the viability of memory safety without lifetime parameters. Explain the infeasibility of making legacy lvalue- and rvalue-references memory safe. Address common objections to safety models that use lifetime annotations. 2 Safe referen

                          • GitHub - ttsiodras/MiniForth: A tiny Forth I built in a week. Blog post: https://www.thanassis.space/miniforth.html

                            ( Wrote a blog post about this here ) It was raining hard, a week ago. And what could you possibly do on a rainy Saturday afternoon? Well... You can make a Forth interpreter/compiler from scratch... ...then put it inside a 1.5$ Blue Pill microcontroller... ...and finally, inside an Arduino UNO... ... within its tiny 2K RAM! Click on the image to watch it blinking the LED of my Arduino: I haven't d

                              GitHub - ttsiodras/MiniForth: A tiny Forth I built in a week. Blog post: https://www.thanassis.space/miniforth.html
                            • Clangのインストール | 学生たちの技術ブログ

                              Clangのインストール ​Clangとは ​ Clangはコンパイラの一つでC,C++等の言語のコンパイルに使えます。Gccと比較されることが多いツールです。LLVMをバックエンドに動作しています。 どうしてClangを使うか ​私はGccと比べてClangのほうがより細かいワーニング、エラー文を表示してくれるので気にいっています。LLVMをバックエンドとして使用していることもあり、高度な最適化ができるのも魅力です。また、LLVM-IRを吐くことができるのでLLVMの勉強にも使えます。 Mac ​最新版をインストールする前に ​MacにはXcodeをインストールすると、自動的にデフォルトのコンパイラとしてClangがインストールされます。しかし、そのClangはAppleが手を加えているある程度古いバージョンのClangのため、最新機能が使えません。最新版のほうがより多くのバグ検出ができ

                              • BehaviorTree.CPP

                                BehaviorTree.CPP 4.5The C++ library to build Behavior Trees. Batteries included. Think in terms of Actions, not statesUnlike state machines, behavior trees emphasize executing actions, not transitioning between states. Build extensible and hierarchical behaviorsBehavior Trees are composable. You can build complex behaviors reusing simpler ones. The power of C++, the flexibility of scriptingImpleme

                                • UIがmacOSネイティブになった「Visual Studio 2022 for Mac Preview 1」がリリース

                                  Visual Studio 2022 for Macは、Mac用に調整された最新の.NET IDEを作成することを目的としており、今回公開されたPreview 1では、すべてのUIがmacOSネイティブに書き直され、Macユーザーに快適なユーザーエクスペリエンスを提供している。 ネイティブ化にともなって、パフォーマンスが向上したほか、長年のUIバグが解消され、クラッシュの頻度が減少した。また、Gitのユーザーエクスペリエンスを改善した、新たなGit Changesウィンドウも搭載している。 さらに、.NET 6 RC1を使用した、.NET 6およびC# 10開発のサポートが追加された。なお、.NET Core 3.1以降を使用したWebおよびクラウド開発、Xamarinプロジェクトによるモバイル開発、Unityを使用したゲーム開発も、引き続きサポートする。 一方で、.NET MAUIプロジ

                                    UIがmacOSネイティブになった「Visual Studio 2022 for Mac Preview 1」がリリース
                                  • C++のvectorまとめ - Qiita

                                    はじめに C++でプログラミングをしていて,配列の代わりとしてvectorを普段から使用しています.非常に便利なので,vectorの基本的な使い方や個人的に考える利点についてについてまとめます.他にも利点など思いつきましたら,教えていただけると嬉しいです! vectorとは cpprefによると, std::vector は動的なサイズの配列をカプセル化するシーケンスコンテナです。 std::pmr::vector は多相アロケータを使用するエイリアステンプレートです。 となっている. 私自身,vectorらしい書き方をしているかはわからないが,配列の代わりとして非常に便利である.使っていて配列より便利と感じる点は, var.size()で配列要素数を参照できるため,関数に渡しやすい var.size()でインデックスの上限を指定するとセグエラ起こさない var.resize(n)で要素数

                                      C++のvectorまとめ - Qiita
                                    • The Year of C++ Successor Languages

                                      2022 has seen many languages created to rival C++. Lucian Radu Teodorescu reports on the current state of the art. C++ is a peculiar programming language. It is one of the most used programming languages, and yet it is one of the most criticised. According to TIOBE index [TIOBE22], for 30 years, C++ has been in the top 4 programming languages (using a 12-month average). See also Figure 1 (the TIOB

                                      • No, C++ still isn't cutting it.

                                        A recent blog post asked "Does C++ still deserve its bad rap?" While that title presumes the answer (after all, a "bad rap" implies that the judgement is undeserved), I think C++'s reputation for making it very difficult to achieve security or memory safety or thread-safety remains well-deserved, even though it's gotten a lot better over the years. I mean that: The c++-17 version of that program i

                                          No, C++ still isn't cutting it.
                                        • タラバガニはカニじゃない(C++ の condition_variable は variable じゃない)

                                          「起こす」は「1人だけ起こす (notify_one)」と「みんな起こす (notify_all)」の2種類。 「寝る」には「永遠に寝る (wait)」「一定時間寝る (wait_for)」「ある時刻まで寝る (wait_until)」の3種類がある。 片方のスレッドが condition_variable を介して眠り、それをもう片方のスレッドが起こすという簡単なサンプルを見てみよう。 #include <iostream> #include <thread> #include <condition_variable> #include <mutex> #include <chrono> int main() { std::mutex mtx; // wait で必要(とりあえず無視) std::condition_variable cv; // これを介して睡眠をコントロールする //

                                            タラバガニはカニじゃない(C++ の condition_variable は variable じゃない)
                                          • C++ to Rust Phrasebook - C++ to Rust Phrasebook

                                            C++ to Rust Phrasebook This book is designed to help C++ programmers learn Rust. It provides translations of common C++ patterns into idiomatic Rust. Each pattern is described through concrete code examples along with high-level discussion of engineering trade-offs. The book can be read front-to-back, but it is designed to be used random-access. When you are writing Rust code and think, "I know ho

                                            • かな漢字変換と日本語処理:〜#05 形態素解析の基本部分を作る〜|ノマドの口笛

                                              5.3 形態素解析 形態素解析とは、概ね日本語文法に従って、単語よりも細かな単位に入力文を分割し、文法に関連した情報や意味に関連した情報を詳細に調べることで、文の構造を明らかにし、様々な用途に活用できる解析結果を提供することを目的にしています。 5.4 構文解析との違い 順序依存型言語では、生成文法に基づく考え方で処理することが可能です。コンパイラ技術もこの考え方に則って発展してきました。 日本語は単語という考え方が希薄で、自立語を並べただけで構文を構成する考え方とは違い、付属語となる助詞により文節という単位を格として扱う格文法という考え方に適合すると考えられています。これは、フィルモアの格文法(Fillmore’s case grammar)と呼ばれる考え方であり、第2次AIブームの頃の自然言語処理で注目されました。 こうしたことから、日本語における構文解析は格解析を主体とするというアプ

                                                かな漢字変換と日本語処理:〜#05 形態素解析の基本部分を作る〜|ノマドの口笛
                                              • Nix Based C++ Workflow From Scratch | The Farming Coders

                                                If you are like me, you have probably already suffered a lot from having your poject depend on libraries installed in your system (e.g. libraries installed with apt install). The down side of having system-wide dependencies is multi-fold but it can be summarized as simple as: It is not reproducible on another machine or another system. It can potentially introduce serious conflicts between your mu

                                                • 【C++】C++ REST SDKを使用したhttp通信してみた

                                                  こんにちは!情熱開発部の金澤です! 年も明けて寒さが厳しくなってきましたが、皆様いかがお過ごしでしょうか。 私は冬だからか今回初めての技術ブログだからなのか分かりませんが震えています。 というわけで今回は、『C++ REST SDKを使用したhttp通信』についてご紹介していきたいと思います! C++ REST SDKとは C++ REST SDKとは「ネイティブ コードをクラウド環境に移行できるようにするためにマイクロソフトが踏み出した最初の 1 歩」とMicrosoftが提供しているオープンソースのライブラリです。 JSON対応や非同期通信はもちろん、Microsoftが提供していることもあり何よりインストールが非常に簡単で、VisualStudioからであればNuGetにて直ぐにインストールすることが出来ます。 また、C++との一貫性が高いのも魅力的ですね。 それでは早速cppres

                                                    【C++】C++ REST SDKを使用したhttp通信してみた
                                                  • Visual Studio 16.9 Preview 3 (C# Next チョットある)

                                                    Visual Studio 16.9 Preview 3 が出たということでライブ配信をしていました。 冒頭で話しているんですが、Preview 1 は 16.8 正式リリースと同時だったので 16.8 の方を紹介、 Preview 2 はそんなに大きな変化もなかったので、Preview 3 で初めて 16.9 の話です。 ポロリ YouTube 配信前に作ってあるお品書き issueのタイトルには「C# Next ポロリもあるよ」とか書いているんですが。 まあ変なタイトルを付けたかっただけで、ポロリといっても「出ちゃいけないものが出ちゃった」みたいなことはないです。 C# にもちょっとした新 preview 機能追加あったよ 9.0 には間に合わなかったものがさらっと merge されたよ くらいの意味でポロリと言っています。 昨年、C# 9.0 のときは最初に Preview 機能追加

                                                      Visual Studio 16.9 Preview 3 (C# Next チョットある)
                                                    • The Real C++ Killers (Not You, Rust)

                                                      This is Words and Buttons Online — a collection of interactive #tutorials, #demos, and #quizzes about #mathematics, #algorithms and #programming. Hello! I’m Oleksandr Kaleniuk and I’m a C++holic. I have been writing in C++ for 17 years and for all those 17 years I’ve been struggling to get rid of this devastating addiction. It all started in late 2005 with a 3D space simulator engine. The engine h

                                                      • vcpkg を用いた Win/Mac/Linux用 c++プログラムの cmake & vscode 実行例

                                                        vcpkg は Microsoft のオープンソースの c/c++ ライブラリ用のパケージ管理ツールです。 ライブラリのStatic/Sharedの選択が簡単にできたり、VS 統合や専用の cmake スクリプトを用いることでヘッダや .lib のファイル&ディレクトリ設定が簡素化できたりします。 MSのサイトにvcpkg のドキュメント(英語版)があるので、MS公式感はあります。 リポジトリをみると 2016 年からのプロジェクトで、2023-08 現在ざっくり 2000 ライブラリ以上に対応しているようです。 vcpkg は Visual Studio(2017~2022) との統合ができ vc 用ツールとして便利なモノですが、Mac・Linux にも対応しており、cmake ビルドを行えるようにすれば vscode でのデバッグ実行も楽に行えるので、マルチプラットフォームのソフト開発

                                                          vcpkg を用いた Win/Mac/Linux用 c++プログラムの cmake & vscode 実行例
                                                        • Rustは安全で速くて難しくもない — Google公式ブログがC++からの置き換えプロセスを詳細に解説

                                                          9月7日、Googleが「既存のファームウェア コードベースに Rust を導入する(Deploying Rust in Existing Firmware Codebases)」という記事を公式ブログ(Google Security Blog)で公開した。この記事では、ファームウェアをRustで書くことの利点や、RustがC/C++を置き換えていく現状についての見解が述べられている。 Rustの導入によるセキュリティ向上 Googleのブログ記事によると、ファームウェアのコードベースをRustで書き直すことで、メモリ安全性が大幅に向上し、バッファオーバーフローや解放したメモリを誤って使用してしまう(use-after-free)といった脆弱性の原因を排除できると述べている。従来のCやC++によるコードはメモリに関する安全機構が欠如しているため、これらの脆弱性が多くの大規模なコードベースで

                                                            Rustは安全で速くて難しくもない — Google公式ブログがC++からの置き換えプロセスを詳細に解説
                                                          • C++ へようこそ - Modern C++

                                                            C++ は、作成以来、世界で最も広く使用されているプログラミング言語の 1 つになりました。 適切に記述された C++ プログラムは、高速で効率的です。 言語は他の言語よりも柔軟性が高く、最高レベルの抽象化で動作し、シリコンのレベルで動作します。 C++ によって、高度に最適化された標準ライブラリが提供されます。 これにより、低レベルのハードウェア機能にアクセスして、速度を最大化し、メモリ要件を最小限に抑えることができます。 C++ では、ゲーム、デバイス ドライバー、HPC、クラウド、デスクトップ、埋め込み、モバイル アプリなど、ほぼすべての種類のプログラムを作成できます。 他のプログラミング言語のライブラリやコンパイラさえも C++ で作成されます。 C++ の最初の要件の 1 つは、C 言語との下位互換性でした。 その結果、C++ を使用すると常に、生ポインター、配列、null で終

                                                              C++ へようこそ - Modern C++
                                                            • GitHub - cemu-project/Cemu: Cemu - Wii U emulator

                                                              You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                GitHub - cemu-project/Cemu: Cemu - Wii U emulator
                                                              • wabt/wasm2c at main · WebAssembly/wabt · GitHub

                                                                You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                  wabt/wasm2c at main · WebAssembly/wabt · GitHub
                                                                • C++20 Coroutine Iterators - Sticky Bits - Powered by Feabhas

                                                                  A blog looking at developing software for real-time and embedded systems In my first blog post about C++20 Coroutines I introduced the concepts behind a synchronous or generator style coroutine and developed a template class to support coroutines for any data type. In this post I’ll add an iterator to the template to support the range-for loop and iterative algorithms. You may want to review that

                                                                    C++20 Coroutine Iterators - Sticky Bits - Powered by Feabhas
                                                                  • GitHub - michaelforney/cproc: C11 compiler (mirror)

                                                                    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                      GitHub - michaelforney/cproc: C11 compiler (mirror)
                                                                    • C++でEntity Component Systemを実装してみる

                                                                      はじめに CPUの進化により、データの処理速度は毎年驚異的な速度で上がっています。それに対し、データをメモリから受け取る速度はここ十数年で数倍程度にしか進化してません。 その結果、プログラムの実行時間の大部分がデータ取得の待機時間に費やされるようになってしまいました。 そこで、キャッシュメモリとCPUの特性を生かし、データ取得の待機時間を減らすことでパフォーマンスの向上を図ろうとしたのがEntityComponentSystem(ECS) です。 今回は、そんなECSをC++で実装してみたので、その基本的な概念から作り方まで解説していこうと思います。 必要な前提知識 この記事はC++を前提に書いてあるので、ある程度のC++の知識があると読みやすいと思います。 また、途中でコンポーネント指向やオブジェクトプール等のデザインパターンが出てくるので、必要に応じて調べながら読んでいただけると嬉しい

                                                                        C++でEntity Component Systemを実装してみる
                                                                      • GitHub - o3de/o3de: Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform 3D engine that enables developers and content creators to build AAA games, cinema-quality 3D worlds, and high-fidelity simulations without any fees or commercial obligation

                                                                        You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                                          GitHub - o3de/o3de: Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform 3D engine that enables developers and content creators to build AAA games, cinema-quality 3D worlds, and high-fidelity simulations without any fees or commercial obligation
                                                                        • C++ スマートポインタのメモリ管理の仕組み

                                                                          1. 概要 C++11 から導入されているスマートポインタ(unique_ptr, shared_ptrなど) のメモリ管理の仕組みについて調べたことをまとめています。スマートポインタでは、new/deleteの関係ように自分で意図的に delete をしなくても、その変数の生存範囲(スコープ)が終わったタイミングで自動で破棄されるため、動的に確保されたメモリのメモリリークを防ぐことが出来ます。 ここではスマートポインタ自体の前提知識について説明しませんが、C++11スマートポインタ入門が非常に良くまとまっているため、必要があればこれを読むことをお勧めします。 また、ソフトウェアデザイン 2021年9月号でも、C/C++のメモリ管理について概要が少しだけ説明されています。 2. 参照先が誰も居なくなった時点でメモリ解放 スマートポインタの場合、その変数を参照する人が誰も居なくなった時点で自

                                                                            C++ スマートポインタのメモリ管理の仕組み
                                                                          • Visual Studio 2022でC++範囲外アクセスに気づきやすくする方法 - じじいのプログラミング

                                                                            目次 配列外アクセスをしたときの比較表 Visual Studio 2022で範囲外アクセスを気づきやすくする方法5つ エラー一覧を「ビルド+Intellisense」にする sanitizerを積極的に使う 生配列よりstd::arrayがよい Release版でSTLの範囲チェックしたいときは、 _CONTAINER_DEBUG_LEVEL=1 にする インテリセンスが安定せず嫌な場合、clangを代わりに使うのがよい はじめに 先日、Visual Studio 2022で、配列の範囲外アクセスのデバッグでハマってしまった。 constexpr int S = 20; struct Maze { Maze() { for (int y = 0; y < S; ++y) { h[y][0] = true; h[y][S] = true; } for (int x = 0; x < S;

                                                                              Visual Studio 2022でC++範囲外アクセスに気づきやすくする方法 - じじいのプログラミング
                                                                            • never型があると便利か(言語処理系実装者の観点から) | 雑記帳

                                                                              TypeScriptをはじめとするいくつかのプログラミング言語には、never型という型がある。この型は典型的には「制御を返さない関数」の返り値として使われる: function f(x: string): never { console.error(x); throw new Error(); } never型は型システム的には「値を持たない型」「任意の型の部分型」として特徴づけられる。 他のプログラミング言語、例えば私が作っているLunarMLにもnever型があると便利だろうか? 前提:部分型はゼロコストで変換できて欲しい これは私の意見だが、部分型から上位型へはゼロコストで変換できて欲しい。例えば Sub <: Super という関係があった時に、Sub 型の値をゼロコストで Super 型へ変換できて欲しいのはもちろん、関数型についても A -> Sub から A -> Supe

                                                                              • WindowsでLinux環境とC言語の環境を準備する - Qiita

                                                                                はじめに 皆さん、C言語はやってますか? 僕が通っている高専の授業ではではDebian上でC言語を用いてプログラミングを行っていますが、学校でしかできない... という人もいると思います。そこで、Linuxの環境とC言語の環境をWindowsPC上に用意する方法をまとめてみます。 この記事の対象者 C言語を自分のPCで実行できるようにしたい人 Linuxのコマンドの練習を自分のPCでやりたいが、Linuxを入れるのは難しい人 この記事をお勧めしない人 Windowsを愛し、Windowsこそがどの点においても最高だと信じてやまない人 Macユーザー(ただし仮想でWindowsを使用している場合を除く) Visual Studioを使いたい人 この記事を読むにあたって最低限必要なこと PCにWindowsが入っていること PCの管理者権限を持っていること キーボード入力ができること ネットか

                                                                                  WindowsでLinux環境とC言語の環境を準備する - Qiita
                                                                                • C/C++ の const 修飾子の位置で混乱しないために

                                                                                  C や C++ の const 修飾子は変数や引数に指定することで “値が不変である” ということを示す. 極めて単純である. これは書き方にいくつかのバリエーションが存在するが、ポインタ変数に対して指定する場合には初見だと非常に混乱する記述となる. この記事ではこの const 修飾子を混乱せずに使うための考え方についてまとめる. 変数に対して const 指定する場合 int a = 10; のように宣言された変数を const 指定する場合には、以下のいずれかの書き方がある. const int a = 10; // 変数 a の値は書き換えできなくなる. int const a = 10; // 同上 このいずれかの記述を行った場合、変数 a は値を書き換えることができなくなる. すなわち、a = 20; のような代入を行おうとするとコンパイルエラーが発生するようになる. これらは

                                                                                  新着記事