はじめに
農業IoT開発やそのほかIoTの勉強の際に気になったことを備忘録としてまとめています。
普段は下のような感じで書いています。
constとconstexprの違い
constもconstexprも”変更不可”というイメージがありますが、若干違うようです。今回はこの違いについてまとめてみました。なお、constもconstexprも変数および関数の識別子として使用できます。
| 項目 | const | constexpr |
| 変更 | 不可 | 不可 |
| 保持するタイミング | 実行時 | コンパイル時 |
もう少し具体的に考えてみます。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の記事も人気が出てきています。ぜひご覧ください。





コメント