Cソースでバイナリ表記をするには

テクニカル・ノート 46979

アーキテクチャ:

All

コンポーネント:

compiler

更新日:

2022/07/07 4:57

はじめに

Cソースの2進整数リテラル(0b…)は、新しいバージョンのIAR C /C++Compiler®でサポートされています。

2進整数リテラルをサポートしていないバージョンを使用する場合、このテクニカルノートは代替の方法について説明します。

解説

背景

2進整数リテラル(0b…)はC ++言語でサポートされていますが、C言語ではサポートされていません。

IAR Systemsは、Cソースコードで2進整数リテラルをサポートするコンパイラ拡張機能を追加しました。 (レガシーバージョンのコンパイラは、2進整数リテラルをサポートしていません。)

Arm9.20.1用のIAREmbeddedWorkbench®のサンプルプロジェクトがここからダウンロード できます。

解決方法

解決策は、必要な2進整数リテラルに#defineディレクティブを使用することです。例えば、5のバイナリ値は、以下のように実装できます。

#define b0000000000000101 0x0005

このような#defineを追加することで、アプリケーション内で任意のバイナリ値を使用できます。

テンプレートファイル

#defineディレクティブを使用してバイナリ値の設定を簡単に行うために、このアーカイブをダウンロードしてください。zipファイルには以下の2つのファイルが含まれています。

  • Binary_values_8_bit.txt: 正の8ビットバイナリ値の定義が含まれています。
  • Binary_values_16_bit.txt: 正の16ビットバイナリ値の定義が含まれています。

テンプレートファイルの使用方法

必要な各#defineディレクティブをテキストファイルからコピーして、プロジェクトのヘッダファイルに追加してください。

テキストファイルの内容は、ヘッダファイルですべてが使用されることを意図したものではないことに注意してください。 すべてのコンテンツを使用すると、ビルド時間が大幅に増加します。

まとめ

2進整数リテラル(0b…)は、レガシーバージョンのCコンパイラではサポートされていませんが、ワークアラウンドがあります。

 

全ての製品名は、それぞれの所有者の商標または登録商標です。

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。