並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 41件

新着順 人気順

clangの検索結果1 - 40 件 / 41件

clangに関するエントリは41件あります。 プログラミングprogrammingC などが関連タグです。 人気エントリには 『表紙 - 本物のC』などがあります。
  • 表紙 - 本物のC

    このサイトは「本物の C 言語」について学習する機会の提供を目的としています。 「本物の」とはつまり、 標準規格(仕様)が C 言語をどういうものとして定めているか C プログラムが実際に CPU をどう動かすか という二つの意味合いに於いてです。 どうも巷間にはその辺りを気にせず何となくで書かれた資料が多い様なので、このサイトにより少しでも世界が最適化される事を期待します。 権利について 当然ですがこのサイト全体は著作権法により保護されています。法と良心に則って御利用下さい。 連絡はcontact<アット>real-c.infoまで。

    • printfに4285個アスタリスクをつけるとclang++が死ぬ - Qiita

      def check(n) s = "*"*n f = open("test.cpp","w") f.puts <<EOS #include <cstdio> int main(){ (#{s}printf)("Hello World\\n"); } EOS f.close() return system("clang++ test.cpp") end check(ARGV[0].to_i) $ ruby check.rb 10000 clang: error: unable to execute command: Illegal instruction: 4 clang: error: clang frontend command failed due to signal (use -v to see invocation) Apple LLVM version 10.0.1 (clang

        printfに4285個アスタリスクをつけるとclang++が死ぬ - Qiita
      • 「Linux」、バージョン6.1でRustを導入へ--トーバルズ氏が明言

        LinuxにRustを導入するかどうかという議論は終わりを迎えた。Rustの実装は既に始まっている。Linuxの父であるLinus Torvalds氏は電子メールによる筆者との対話の中で「何かおかしなことが発生しない限り、それ(Rust)は6.1で導入される」と述べた。 Linuxカーネルの記述言語としてプログラミング言語Rustを導入するという議論は、かなり前から存在していた。Linuxカーネルの開発者らは、年次カンファレンス「Linux Plumbers Conference(LPC)2020」の場で、Linuxの新たなインラインコードでのRustの使用について検討を開始していた。また、「Android」(それ自体がLinuxのディストリビューションだ)の開発言語としてRustを支持しているGoogleは、2021年4月にLinuxカーネルへのRust導入の動きを後押しし始めていた。

          「Linux」、バージョン6.1でRustを導入へ--トーバルズ氏が明言
        • Why Is SQLite Coded In C

          Note: Sections 2.0 and 3.0 of this article were added in response to comments on Hacker News and Reddit. Since its inception on 2000-05-29, SQLite has been implemented in generic C. C was and continues to be the best language for implementing a software library like SQLite. There are no plans to recode SQLite in any other programming language at this time. The reasons why C is the best language to

          • 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
            • A Modern C Development Environment

              Sometimes, C/C++ projects have a long development cycle. When working on such a project, it can be easy to take our development environment for granted, and forget about the effort invested in its bring-up. The build environment works like magic, the test framework is neatly integrated, and the CI/CD pipeline relieves us of tedious, repetitive tasks. For me, all it took was a simple thought: How d

                A Modern C Development Environment
              • 最近の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)
                • PostgreSQL ソースコードリーディング | Youki Shiraishi

                  PostgreSQL Server PostgreSQL のアーキテクチャを頭に叩き込んでおこう. 上の図は PostgreSQL サーバーの主要なコンポーネントとそれらの関係を表している. PostgreSQL は,クライアントサーバーモデルに基づく共有メモリ型のアーキテクチャを採用している. サーバープロセス postgres は,クライアントからコネクション要求を受け取るとフォークしてバックエンドプロセス postgres を生成する. 生成されたバックエンドプロセスは,以降,そのクライアントとのやりとりを担う. クライアントは,バックエンドプロセスと通信してクエリを送信したり,結果を受け取ったりする. PostgreSQL のすべてのプロセス間で共有されるメモリ領域は,共有メモリと呼ばれる. 共有メモリは,主に低速なストレージへのアクセスを減らすバッファとして機能する. ストレージ

                  • C++コンパイラはあなたよりも良いコードを書く - Qiita

                    最適化 皆さんご存じの通りC++という言語は速度しか取り柄がありません。複雑怪奇な構文、異常量のコンパイルエラー、何が起きるかわからない未定義動作たち、、、それでもなお私たちがC++を使い続けるのは、そう、極めて速いからです。ちょっと前に流行ったD言語や最近流行りのRustが速いという噂ですが、結局ほとんどの場面で速度においてC++に勝ててはいません。個人的な偏見ですがC++のように速度のみを重視し、安全性を捨てない限りRustに未来はないでしょう。まあ、人から聞いた噂によるとRustの標準ライブラリの中身はunsafeなコードが敷き詰められているらしく、なかなか速いようですが。いずれRustが廃れてUnsafe Rustの方が人気が出たりするかもしれませんね。とりあえず、最も速度面で優れている言語はC++といっても過言ではないでしょう。 そして、その圧倒的な速度を支えるのが何といってもC

                      C++コンパイラはあなたよりも良いコードを書く - Qiita
                    • mimalloc のメモリ管理 - Qiita

                      Microsoft の mimalloc は面白い割り切り方で、小さいソースコードで高速なアロケータを実装しています。 確保するメモリブロックのサイズを、 Small (~8KiB), Large (~512KiB), Huge (512KiB~) の3つに分類し、 Small と Large は同じアルゴリズムで管理し、 Huge は OS 任せにして、 Small と Large は同じアルゴリズムをうまく利用しています。 基礎 OSはpage (x86では基本 4KiB) ごとにメモリをプロセスに割り当てています。 しかしアプリケーションではずっと小さいメモリブロックが必要になることが多くあります。また、必要になるたびに毎回OSからメモリを割り当ててもらうのはパフォーマンスも悪いです。 mimalloc やその他の malloc 実装 (以降 malloc と呼びます) は OS か

                        mimalloc のメモリ管理 - Qiita
                      • 次期C標準 (C23) の内容が固まったらしい

                        C23については最近のC言語と、次期C標準(C23)でも軽く紹介しました。 今回、C23入りする内容が大体固まったようなので改めて紹介します。 この記事を書いている時点での最新の公開されたWorking Draftは N2912 N3047 N3054 N3096です。ただし、C2y向けの最初のドラフトN3220もあり、そちらの方が実際の内容に近いかもしれません。 内容については会議参加者の投稿も参考にしています: https://twitter.com/rcs/status/1550526425211584512 C23 now finalized! : C_Programming というわけで、C23に入る主な機能はこちらです: C23に入る主な機能 POSIXの機能の取り込み: strdup, strndup, memccpy, gmtime_r, localtime_r C++の機

                          次期C標準 (C23) の内容が固まったらしい
                        • Writing a C compiler in 500 lines of Python

                          A few months ago, I set myself the challenge of writing a C compiler in 500 lines of Python1, after writing my SDF donut post. How hard could it be? The answer was, pretty hard, even when dropping quite a few features. But it was also pretty interesting, and the result is surprisingly functional and not too hard to understand! There's too much code for me to comprehensively cover in a single blog

                          • こわくないLLVM入門! - Qiita

                            対象読者 LLVMを勉強し始めたけど何からして良いのかわからない方 アセンブリがちょっとわかる 目標 LLVMの基本的な文法がわかるようになる 環境 Mac Mojave 10.14.6 LLVM 8.0.0 clang 8.0.0 (trunk 348837) LLVMってなに...? LLVMは一言で言えば、プログラミング言語を作成する為の基盤です。プログラミング言語はコンパイラによってバイナリに変換され実行することができます。それを言い換えれば、自分が考えたプログラミング言語のコンパイラを作ることで自作プログラミング言語を作れます。 そして、コンパイラは通常フロントエンド、ミドルエンド、バックエンドに分けられ、各プロセスで様々な処理をしています。特にミドルエンド、バックエンドでは中間言語や各アーキテクチャに対するたくさんの最適化を施さなければなりません。この最適化を預けてフロントエン

                              こわくないLLVM入門! - Qiita
                            • https://twitter.com/yunyundetective/status/1505290944366534658

                                https://twitter.com/yunyundetective/status/1505290944366534658
                              • Actually Portable Executable

                                24 aug 2020 @ justine's web page αcτµαlly pδrταblε εxεcµταblε One day, while studying old code, I found out that it's possible to encode Windows Portable Executable files as a UNIX Sixth Edition shell script, due to the fact that the Thompson Shell didn't use a shebang line. Once I realized it's possible to create a synthesis of the binary formats being used by Unix, Windows, and MacOS, I couldn't

                                • GitHub - scandum/quadsort: Quadsort is a branchless stable adaptive mergesort faster than quicksort.

                                  A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

                                    GitHub - scandum/quadsort: Quadsort is a branchless stable adaptive mergesort faster than quicksort.
                                  • Intel oneAPIを入れるとClangが死ぬかもしれない

                                    はじめに TL;DR. Intel oneAPIとClangは競合する可能性があります iccが無償になって,yumやaptで簡単に入るよって書いてる記事が増えてきました. 気軽な気持ちで入れられるような顔をしていますが,これは罠です. setvars.sh とかいうクソスクリプトがシステムの環境変数設定をぶち壊す可能性があります. 自分のマシンなら良いですが,何も考えずに共用のマシンにインストールするのは考え直してください. この記事は以下2つの記事の続きです.何のためにインストール記事なんて書いたかって,実はこの記事をちゃんと書きたかったからです. Intel oneAPIのIntelコンパイラやDPC++についてちょっと調べた Intel oneAPIのUbuntuへのインストールとToolkitのサイズでかすぎ問題 20210829追記 LLVMベースの新しいコンパイラはicx/i

                                      Intel oneAPIを入れるとClangが死ぬかもしれない
                                    • macOSでの動的ロード問題まとめ - なるせにっき

                                      主な問題 最近のRuby+Xcodeでは以下の4つの問題があるっぽい dynamic_lookupがXcode 14で警告が出る two-level namespace vs. flat namespace 別の拡張ライブラリのシンボルを参照できない disable-sharedなrubyがfat binaryを読めない dynamic_lookupがXcode 14で警告が出る https://bugs.ruby-lang.org/issues/19005 Xcode 14にて以下の警告が出て、拡張ライブラリのコンパイルに失敗する。 ld: warning: -undefined dynamic_lookup may not work with chained fixups https://openradar.appspot.com/radar?id=5536824084660224 W

                                        macOSでの動的ロード問題まとめ - なるせにっき
                                      • 『低レイヤを知りたい人のためのCコンパイラ作成入門』を使ってやってみた、縛り実況と初見実況

                                        Kernel/VM探検隊は、カーネルやVM、およびその他なんでもIT技術の話題ジャンルについて誰でも何でも発表してワイワイ盛り上がろうという会です。hsjoihs氏は、『低レイヤを知りたい人のためのCコンパイラ作成入門』を用いた縛り実況、初見実況について発表しました。 縛り実況、初見実況と呼ばれるタイプのゲーム実況が大好き hsjoihs氏(以下、hsjoihs):プレゼンその2をやります。 プレゼンその2、「Rui Ueyama compiler book any% 縛り実況(C-to-ELF category)」というタイトルで発表をしたいと思います。自己紹介はさっきやったので飛ばします。 みなさん、ゲーム実況は好きですか? 私は、ゲーム実況が大好きです。ゲーム実況がきっかけで大学の進路が決まったぐらいには大好きです。 司会者:へぇ。 hsjoihs:その中でも特に好きなのが、縛り実況

                                          『低レイヤを知りたい人のためのCコンパイラ作成入門』を使ってやってみた、縛り実況と初見実況
                                        • Google Chrome、新最適化で読み込みを最大10%高速化

                                            Google Chrome、新最適化で読み込みを最大10%高速化
                                          • GitHub - rui314/chibicc: A small C compiler

                                            chibicc: A Small C Compiler (The old master has moved to historical/old branch. This is a new one uploaded in September 2020.) chibicc is yet another small C compiler that implements most C11 features. Even though it still probably falls into the "toy compilers" category just like other small compilers do, chibicc can compile several real-world programs, including Git, SQLite, libpng and chibicc i

                                              GitHub - rui314/chibicc: A small C compiler
                                            • C programming language extension: Cedro pre-processor

                                              Cedro Español, English Cedro is a C language extension that works as a pre-processor with eight features: The backstitch macro x@ f(), g(y); → f(x); g(x, y); (related work). Deferred resource release auto ... or defer ... (related work). Break out of nested loops break label; (related work). Notation for array slices array[start..end] (related work). Block macros #define { ... #define }. Loop macr

                                              • The SYZBOT CTF

                                                目次 第0章 概要 0.1 syzbot とは? 0.2 主な登場人物紹介? 0.3 自己紹介:熊猫の Linux との関わりについて 0.4 今日のお話「バグハンティング」 第1章 Linux カーネルについて 1.1 Linux カーネルの規模について 1.2 Linux カーネルの制約事項について 1.3 Linux カーネルのデバッグ支援機能について 第2章 カーネルメッセージを読めるようにするための試行錯誤について 2.1 printk() に求められているものとは? 2.2 複数行分のメッセージをバッファリングする試み(2017年4月~) 2.3 メッセージ本文中にコンテキスト情報を埋め込む試み(2018年4月~) 2.4 1行分のメッセージをバッファリングする試み(2018年6月~) 2.5 再び1行分のメッセージをバッファリングする試み(2018年9月~) 2.6 再挑戦(

                                                • Rust is coming to the Linux kernel

                                                  After 31 years, a second programming language will be allowed in Open Source Summit Both Linus Torvalds' Open Source Summit keynote and Jonathan Corbet's "Kernel Report" discussed efforts to allow Rust modules in Linux. The next version of the kernel will be 6.0, but as ever, the change of major version number doesn't denote any major technical changes. Torvalds acknowledged that it might have bee

                                                    Rust is coming to the Linux kernel
                                                  • Windows 10で始めるC言語開発(1) Windows 10でC言語開発をしよう!LLVM/Clangで行く

                                                    TIOBE Programming Community Index (2021年4月4日) 資料: TIOBE Software 増加傾向を続けているのはPythonだ。使われる分野も多岐にわたる。学習が比較的容易で必要とされる産業が多いということは、それだけ就職口があるということも意味している。この言語に人気が出るのは当然だ。 長期にわたって減少傾向にあるものの、Javaにも根強いシェアがある。Javaは既に企業システムの基幹部分で使われているなど、ビジネスにおいて欠かすことができない言語だ。新規開発に加えて、Javaで開発したシステムのメンテナンスや改修といったニーズもある。これも就職先が多いプログラミング言語だ。 そして現在、TIOBE Programming Community Indexの1位はC言語だ。もともとC言語は人気1位だったが、Javaの登場以降は2位に甘んじていた。し

                                                      Windows 10で始めるC言語開発(1) Windows 10でC言語開発をしよう!LLVM/Clangで行く
                                                    • John Regehr's Integers in C

                                                      Welcome to John Regehr's Integers in C quiz A long time ago, John Regehr wrote a very nice quiz about C integers. He's a pretty awesome expert on undefined behavior and this quiz highlights the type of stuff you need to know when auditing C code. A lot of times you’ll run into really strange scenarios which end up causing exploitable bugs later in the code. The original version was taken down long

                                                      • Windows 10で始めるC言語開発(11) Windows 10でC言語開発をしよう! 開発支援機能を使う

                                                        簡単になったC言語開発環境のセットアップ これまでWindows 10でLLVMとVisual Studio CodeをベースにC言語の開発環境をセットアップする方法を説明してきた。これで必要最小限の環境は整ったはずだ。開発からデバッグ、チームでのソースコード共有や管理などを行える。 Visual Studio CodeとLLVMでC言語開発 本連載を開始してから、Windows Package Manager (Winget)のバージョン1がリリースされたのはインパクトが大きかった。なぜなら、これまでGUIベースでインストール作業を行う必要があったが、ほとんどCUIコマンドで行えるようになったからだ。GUIベースのインストールはセットアップ方法をメモしておくのが面倒だが、コマンドベースのインストールはメモしておくのが簡単だし、作業も簡単だ。これでWindows 10におけるさまざまなセッ

                                                          Windows 10で始めるC言語開発(11) Windows 10でC言語開発をしよう! 開発支援機能を使う
                                                        • 【連載】Windows 10で始めるC言語開発

                                                          Windows 10でC言語開発をしよう! Windows APIで行く【Microsoft C/C++】(2)

                                                            【連載】Windows 10で始めるC言語開発
                                                          • 「LLVM 9.0」リリース、asm gotoのサポートでLinuxカーネルのビルドが可能に | OSDN Magazine

                                                            The LLVM Projectは9月19日、コンパイラおよび関連ツールチェーン集「LLVM 9.0」をリリースしたことを発表した。ライセンスが例外付きApache License 2に変更になったほか、機能面ではメインラインのLinuxカーネル(x86_64)のビルドが可能になり、RISC-Vサポートが正式扱いとなるなどの強化が加わっている。 LLVMはモジュラーおよび再利用可能なコンパイラとツールチェーンを提供するプロジェクト。イリノイ大学でSSAベースのコンパイラ開発プロジェクトとしてスタートした。現在はLLVM Coreに加え、フロントエンドのClang、デバッガのLLDB、C++11とC++14をサポートするC++ Standard Libraryの実装であるlibc++とlibc++ ABIなど、複数のサブプロジェクトを擁する。 LLVM 9.0は3月に公開されたバージョン8に

                                                              「LLVM 9.0」リリース、asm gotoのサポートでLinuxカーネルのビルドが可能に | OSDN Magazine
                                                            • Your Guide to the CPython Source Code – Real Python

                                                              Are there certain parts of Python that just seem magic? Like how are dictionaries so much faster than looping over a list to find an item. How does a generator remember the state of the variables each time it yields a value and why do you never have to allocate memory like other languages? It turns out, CPython, the most popular Python runtime is written in human-readable C and Python code. This t

                                                                Your Guide to the CPython Source Code – Real Python
                                                              • Cで作った関数をpythonで呼ぶ - Qiita

                                                                3行で 普段はpythonを使うが、やむにやまれぬ事情でC言語で書かれたリソースを使う必要はまま生じる pythonはCを使って新たなモジュールを追加することができるので、その機能を使えばいい Python.hに用意された特別な構造体を使ってCでモジュール名、メソッド、引数を定義し、distutils.core.setup(pythonのメソッド!!)を使ってビルドする 必要な作業 C言語で書かれたソースコードのベースを用意 C言語でラッパーを記述 pythonでsetupスクリプトを記述 setupスクリプトを実行 細かいことはいいから答えを教えろ ソースコードと使い方だけ書いて下記のリポジトリにアップロードしときました。 https://github.com/nagiton/c-python-api 目標 自作のモジュールhelloをC言語で作成し、下記のような出力を実現する。 sh-

                                                                  Cで作った関数をpythonで呼ぶ - Qiita
                                                                • GitHub - lhoursquentin/sed-bin: sed to C translator written in sed

                                                                  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 - lhoursquentin/sed-bin: sed to C translator written in sed
                                                                  • eBPF assembly with LLVM

                                                                    From C to Object File Down to the Instructions eBPF Step by Step with LLVM Compiling from C to eBPF Assembly Assembling to an ELF Object File A Human-Friendly Output with llvm-objdump Inline Assembly Conclusion This post was left aside as a draft for a long time. Most of it was written in December 2017. I publish it with the hope it can still be helpful today, even though the Cilium guide also cov

                                                                      eBPF assembly with LLVM
                                                                    • make the main zig executable no longer depend on LLVM, LLD, and Clang libraries · Issue #16270 · ziglang/zig

                                                                      This issue is to fully eliminate LLVM, Clang, and LLD libraries from the Zig project. The remaining ties to these projects are as follows: completely eliminate dependency on LLD #8726 eliminate dependency on LLD for Mach-O #8727 eliminate dependency on LLD for ELF #17749 eliminate dependency on LLD for COFF/PE #17751 eliminate dependency on LLD for WebAssembly #17750 LLVM directly output LLVM bitc

                                                                        make the main zig executable no longer depend on LLVM, LLD, and Clang libraries · Issue #16270 · ziglang/zig
                                                                      • There is no 'printf'.

                                                                        Signs of Triviality Opinions, mostly my own, on the importance of being and other things. [homepage] [blog] [jschauma@netmeister.org] [@jschauma] [RSS] Easy, right? It's gotta be 0, because since at least ISO/IEC 9899:1999 (aka "C99"), main shall implicitly return 0 if you, the forgetful programmer, didn't bother to explicitly return a value: 5.1.2.2.3 Program termination If the return type of the

                                                                          There is no 'printf'.
                                                                        • 絵で見てわかるC言語入門 - 第1章 - w_o’s diary

                                                                          さて、C言語を使い慣れた人には常識ですが、C言語初心者にとって少し難しいのが、変数の宣言です。 例えば、初心者にとって、関数ポインタの配列へのポインタを返す関数の宣言を書くのはあまり簡単ではありません。 C言語の初心者には、以下のようなコードを書くのは少し難しく、また、C言語にあまり慣れていない人は、typedefなどを使ってしまいがちです。 typedef int (*func_t)(int); typedef func_t func_arr_t[10]; extern func_arr_t *x[40]; int (*(*x[40])[10])(int); int (*(*func(int i))[10])(int) { return x[i]; } そのようなことでは、いつまでたってもC言語の初心者を脱出することはできません。この章では、変数の宣言について詳しく勉強することにしましょ

                                                                            絵で見てわかるC言語入門 - 第1章 - w_o’s diary
                                                                          • Clangのインストール | 学生たちの技術ブログ

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

                                                                            • The Solid-State Register Allocator

                                                                              I recently found myself needing a very fast register allocator for very simple code. There's a huge amount of academic research on the subject, dating back decades, and just as many published implementations; my specific implementation – while not fundamentally novel – landed in an interesting-enough part of configuration space that it seemed worth writing up. The system has one big limitation: it

                                                                              • clang-formatの導入手順と使い方

                                                                                はじめに これは何か / 何がいいのか clang-formatは、主にC++を対象としたソースコード整形ツール(code formatter)である。 ソースコード整形ツールは、ソースコードのフォーマット: コーディングスタイルのうちの見た目に関するものを、一定のルールに従って整形するツールである。ソースコード整形ツールを使うことで、例えばインデントの行い方やカッコの付け方などを手間をかけずに統一できる。チームで開発する際などに、全ソースコードのフォーマットをツールに任せて統一できると、フォーマットに対する好みの差によるソースコードの差分が発生しないため開発効率がよい。 C++用ソースコード整形ツールとして、2022年9月現在で名前がよく知られているのはclang-formatぐらいの様子。 clang-formatでは、整形の行い方をルールファイルで指定する。用意されているスタイル(G

                                                                                  clang-formatの導入手順と使い方
                                                                                • clangdを使う際のメモ - Shohei Yoshida's Diary

                                                                                  最近ささっと C/C++書くとき, Emacsを使っているのだが, LSP serverとして clangdを使う際のメモ Emacsの設定 Emacs開発版を使っているので, eglotをそのまま使う(C/C++ではデフォルトではサーバとして clangdが使われる) (add-hook 'c-mode-hook #'eglot-ensure) (add-hook 'c++-mode-hook #'eglot-ensure) 1ファイルの場合 特に対応が不要. よしなし補完なりエラーを表示してくれる ビルドファイルがあるような本格的なプロジェクトの場合 各種フラグをセットしていたり, include pathを指定しておく必要があるので compile_commands.json を生成しておく必要がある. compile_commands.json はファイルの親ディレクトリかそのいず

                                                                                    clangdを使う際のメモ - Shohei Yoshida's Diary

                                                                                  新着記事