1分でわかる!constとconstexprの違い【Arduino IDE備忘録#9】

未分類

この記事は2026年2月に書かれたものです。

はじめに

農業IoT開発やそのほかIoTの勉強の際に気になったことを備忘録としてまとめています。

普段は下のような感じで書いています。

constとconstexprの違い

constもconstexprも”変更不可”というイメージがありますが、若干違うようです。今回はこの違いについてまとめてみました。なお、constもconstexprも変数および関数の識別子として使用できます。

項目constconstexpr
変更不可不可
保持するタイミング実行時コンパイル時

もう少し具体的に考えてみます。constは “実行時に保持する” (評価という表現の方が正確?)ので、コンパイル時に計算できない部分があるとコンパイルエラーが出ます。つまり、下のような場合にエラーが出ます。

//以下のhogehogeは実行時に呼ばれる
const int hogehoge() {
  return 10;
}

const int n = hogehoge(); //constなので定数になる必要がある
int a[n]; //コンパイル時にnが決まらないのでコンパイルエラーになる

一方で、constexprはコンパイル時に保持されます。hogehogeをconstexprとすれば、コンパイルが通るようになります。

//以下のhogehogeはコンパイル時に呼ばれる
constexpr int hogehoge() {
  return 10;
}

constexpr int n = hogehoge(); //ここはconstでもOK
int a[n]; //コンパイル時にnが決まるのでOK

最後に

constとconstexprの違いは一見するとそこまでの違いではないかもしれませんが、誤った使い方をしてしまうと大変ことになってしまいます。気をつけなければ・・・

以上!

おすすめの書籍

 もっと詳しくM5Stackについて知りたい!という方はこちらの書籍がおすすめです。とても詳しく載っていてわかりやすいです。

とりあえず何か作ってみたい!という方にはこちらの書籍がおすすめです。書いてある通りにやるだけでお手軽にIoTデバイスを作ることができます。

Arduinoで電子工作したい方にはこちらもおすすめです!Arduinoでどんなことができるのか、一目でわかる一冊になっています。

※Amazonのアソシエイトとして、当メディア(Nラボ備忘録)は適格販売により収入を得ています。

他記事のご紹介

当ブログではさまざまな記事を投稿しています。最近はPythonで物理シミュレーションをやってみたり、JavaScriptの記事も人気が出てきています。ぜひご覧ください。

コメント

タイトルとURLをコピーしました