Enviar búsqueda
Cargar
組み込みでこそC++を使う10の理由
•
28 recomendaciones
•
27,107 vistas
K
kikairoya
Seguir
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 32
Descargar ahora
Descargar para leer sin conexión
Recomendados
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
Recomendados
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
クロージャデザインパターン
クロージャデザインパターン
Moriharu Ohzu
新しい並列for構文のご提案
新しい並列for構文のご提案
yohhoy
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
Marp Tutorial
Marp Tutorial
Rui Watanabe
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
amusementcreators
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
LLVM最適化のこつ
LLVM最適化のこつ
MITSUNARI Shigeo
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
KageShiron
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
Fixstars Corporation
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
マーク&スイープ勉強会
マーク&スイープ勉強会
7shi
C++0x総復習
C++0x総復習
道化師 堂華
Más contenido relacionado
La actualidad más candente
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
クロージャデザインパターン
クロージャデザインパターン
Moriharu Ohzu
新しい並列for構文のご提案
新しい並列for構文のご提案
yohhoy
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
Marp Tutorial
Marp Tutorial
Rui Watanabe
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
amusementcreators
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
LLVM最適化のこつ
LLVM最適化のこつ
MITSUNARI Shigeo
関数プログラミング入門
関数プログラミング入門
Hideyuki Tanaka
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
KageShiron
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
Fixstars Corporation
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
La actualidad más candente
(20)
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
クロージャデザインパターン
クロージャデザインパターン
新しい並列for構文のご提案
新しい並列for構文のご提案
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
Marp Tutorial
Marp Tutorial
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
LLVM最適化のこつ
LLVM最適化のこつ
関数プログラミング入門
関数プログラミング入門
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
明日使えないすごいビット演算
明日使えないすごいビット演算
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Similar a 組み込みでこそC++を使う10の理由
マーク&スイープ勉強会
マーク&スイープ勉強会
7shi
C++0x総復習
C++0x総復習
道化師 堂華
C++ tips4 cv修飾編
C++ tips4 cv修飾編
道化師 堂華
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
信之 岩永
Objc lambda
Objc lambda
matuura_core
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
道化師 堂華
C++11概要 ライブラリ編
C++11概要 ライブラリ編
egtra
Brief introduction of Boost.ICL
Brief introduction of Boost.ICL
yak1ex
Emcpp item31
Emcpp item31
mitsutaka_takeda
C++0x in programming competition
C++0x in programming competition
yak1ex
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
egtra
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
Preferred Networks
Hupc 1
Hupc 1
Hiroki Takeda
C++0x 言語の未来を語る
C++0x 言語の未来を語る
Akira Takahashi
Python physicalcomputing
Python physicalcomputing
Noboru Irieda
C++11のつかいかた
C++11のつかいかた
amusementcreators
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
digitalghost
C++の復習
C++の復習
Toshihiko Ando
Similar a 組み込みでこそC++を使う10の理由
(20)
マーク&スイープ勉強会
マーク&スイープ勉強会
C++0x総復習
C++0x総復習
C++ tips4 cv修飾編
C++ tips4 cv修飾編
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
Objc lambda
Objc lambda
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
C++11概要 ライブラリ編
C++11概要 ライブラリ編
Brief introduction of Boost.ICL
Brief introduction of Boost.ICL
Emcpp item31
Emcpp item31
C++0x in programming competition
C++0x in programming competition
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
Hupc 1
Hupc 1
C++0x 言語の未来を語る
C++0x 言語の未来を語る
Python physicalcomputing
Python physicalcomputing
C++11のつかいかた
C++11のつかいかた
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
C++の復習
C++の復習
Último
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Último
(11)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
組み込みでこそC++を使う10の理由
1.
組み込みでこそ C++を使う100の理由 Aiming 大阪社内勉強会 2012-06-11 @kikairoya
2.
喋ること •
C滅びろ • C滅びろ • C滅びろ • C滅びろ • C滅びろ
3.
「Cを使う必然性」の幻想 •
C++使うと遅くなるしCでいいよ • …同じならCでよくね? • いや例外とかでかいじゃん • templateとかよくわかんないし
4.
C++使うと遅くなるしCでいいよ • そうでもない • 同じことを実現しようとすれば、ほぼ正確に同じだけ
の命令数が必要 – Cで書いてもC++で書いても生成コードサイズは 大して変わらない(RTTIと例外テーブルは除く) • 20年前の昔なら兎も角、21世紀も10年過ぎた現在 ではJavaですらCより速い場合がある
5.
「C++遅い」の主要因 • 無意味な仮想関数
– dynamic polymorphismを使わないなら要らない • newの乱発 – Cと同じように単にスタックに配置すればいい • SjLj例外ハンドリング – Dw2例外ハンドリングを使うか、OFFにする
6.
おまけ:Javaのパフォーマンス • http://blog.cfelde.com/2010/06/c-vs-java-
performance/ とか g++ 4.3 vs Sun Java HotSpot VM, version 1.6.0_20
7.
8.
9.
…同じならCでよくね? • んなこたない • C++でしか出来ないことはあるけれど、Cでしか出来
ないことはほとんど無い – C99の複合リテラル・名前付き初期化くらい – どちらもC++で似たような機能は実現可能 – C89に限定すれば事実上「全く」無いと言える
10.
いや例外とかでかいじゃん • そげなことない • 不要ならOFFにすればいいだけ •
RTTIも同様 • 例外飛ばしてたらリアルタイム性守れない場 合があるので、その場合はOFF • 例外無くてもデストラクタは正しく走るので、リ ソース管理も安全安心
11.
templateとかよくわかんないし • 面倒な部分はライブラリ側に全部隠せます • エラーコードは確かに量多いですが…
実行時に不思議な挙動をするか コンパイル時に説教されるか どっちがいいですか? • コンパイル通した時点でデバッグ終了が理想 – 現実は厳しいけれど、コンパイラが見つけ てくれるエラーの量はCとは段違い
12.
便利で危険なprintf • printfって便利だけど危ないよね… • sizeof(int)==2の環境だと特に問題が顕在化
しやすい • それC++なら型安全に出来るよ • ntfmtとか • cprintfとか
13.
printfの罠 • たとえばこんなコード extern int
g_value_for_something; void logger() { printf("value:%d¥n", g_value_for_something); }
14.
printfの罠 • 「intが16ビットですぐ溢れるからlongにしよう」 extern long
g_value_for_something; void logger() { printf("value:%d¥n", g_value_for_something); }
15.
printfの罠 • 「intが16ビットですぐ溢れるからlongにしよう」 extern long
g_value_for_something; void logger() { !!!フォーマット指定子を変え忘れた!!! printf("value:%d¥n", g_value_for_something); }
16.
constexprなprintfなら • 変え忘れたらコンパイルエラーにできます extern long
g_value_for_something; void logger() { cprintf("value:%d¥n", g_value_for_something); } FORMAT_ERROR_format_specifier_d_takes_int_but_ given<T>::fail() [with T = long int]
17.
void *パレード • Cで汎用コンテナやアルゴリズム作ろうとする
と、void *の山になりますよね… • ライブラリで閉じていればまだいいけど、ユー ザコードでvoid *からキャストする必要がある • それC++なら型安全に出来るよ • STLとか
18.
ビットフィールドの恐怖 • 組み込みでも一番低いレイヤではハードウェ
アレジスタを叩く必要がある • Cだとよくビットフィールド使うけれど… • GCCでは間違ったアドレスにアクセスすること がある!
19.
ビットフィールドの恐怖 • こんなありふれたコードから… volatile struct
{ volatile unsigned int a: 8; volatile unsigned int b: 4; } bitfield; int main() { bitfield.a = 1; }
20.
ビットフィールドの恐怖 • こんな恐ろしいコードが!!!
movl $1, bitfield+3(%rip) ↑ (bitfield+3)番地に32ビットで書き込み
21.
ビットフィールドの恐怖 • 組み込みでも一番低いレイヤではハードウェアレジ
スタを叩く必要がある • Cだとよくビットフィールド使うけれど… • GCCでは間違ったアドレスにアクセスすることがあ る!(注: BTSにパッチ投稿済) – ベンダコンパイラでもコンパイルオプション一つで ビットオーダーが変わることがある • それC++なら安全でポータブルに出来るよ
22.
ビットフィールドの克服 • こんなコードを用意しておけば… struct addr_t
{ size_t addr; }; template <typename T, int H, int L = H> struct ioaccess_bit { template <int = bitsizeof(H)-1, int = H> struct gen_mask { static constexpr T value = (~static_cast<T>(0)<<H+1) ^ (~static_cast<T>(0)<<L); }; template <int h> struct gen_mask<h, h> { static constexpr T value = ~(~static_cast<T>(0) << L); }; constexpr ioaccess_bit(addr_t addr): addr(addr.addr) { } size_t addr; // continue
23.
ビットフィールドの克服 • こんなコードを用意しておけば… // continued
size_t addr; static constexpr T mask = gen_mask<>::value; constexpr T omit_bits(T x) { return x & ~mask; } constexpr T extract_bits(T x) { return (x & mask) >> L; } constexpr T shift_bits(T x) { return (x << L) & mask; } volatile T *get_addr() const { return reinterpret_cast<volatile T *>(addr); } operator T() const { return extract_bits(*get_addr()); } ioaccess_bit operator =(T v) const { T tmp = *get_addr(); *get_addr() = omit_bits(tmp) | shift_bits(v); return *this; } };
24.
ビットフィールドの克服 • こんな定義で… struct {
struct reg_t { struct can_mb_id_t { struct bit_t { static constexpr size_t base = 0x00090200; size_t offset; ioaccess_bit<uint32_t, 31> IDE = addr_t{base+offset}; ioaccess_bit<uint32_t, 30> RTR = addr_t{base+offset}; ioaccess_bit<uint32_t, 28, 18> SID = addr_t{base+offset}; ioaccess_bit<uint32_t, 17, 0> EID = addr_t{base+offset}; bit_t(size_t off): offset(off) { } } BIT; } ID; }; reg_t operator[] (size_t n) { return reg_t{{{n}}}; } } MB;
25.
ビットフィールドの克服 • こんなコードが書けます。 int n
= MB[0].ID.BIT.SID; MB[0].ID.BIT.EID = 12; assert(MB[1].ID.BIT.IDE == 1);
26.
割り込みマスク •
割り込みを一時的にマスクしたいこと、有りますよね • sti()/cli()でいいんだけど、もしネストされてたら…? • というかcli()とか呼ぶの忘れますよね • それC++なら自動化できるよ
27.
単純な例 struct lock_interrupt {
lock_interrupt() : masked(get_imask_ccr()) { set_imask_ccr(1); } ~lock_interrupt() { set_imask_ccr(masked); } bool masked; }; // in some function... lock_interrupt lk; // do critical action, let's forget unmask interrupt flag! }
28.
醜い固定小数点演算 • Cで実数演算する場合は…
– double/floatを使う – 整数を自前でシフトして使う – 固定小数点演算ライブラリを作る • 固定小数点を使う場合、演算子使えなくて大変です よね… • それC++ならスマートに出来るよ
29.
美しい固定小数点演算 fixed calc_1(
void calc_1( fixed v, fixed *result, fixed u fixed *pv, ){ fixed *pu v *= 1.5f; ){ return v + calc_2(u); fixed tmp; } fixed_from_float(&tmp, 1.5f); fixed_mul(pv, pu, &tmp); calc_2(&tmp, pu); fixed_plus(result, pv, &tmp); }
30.
美しい固定小数点演算 • 演算子オーバーロードは用法・容量を守って
正しく使いましょう。
31.
まずは簡単なところから • たとえC++の機能を使っていなくても、拡張子は.cpp
にしましょう • マクロで定数やインライン関数を書くのはやめて、 static constやinlineを使いましょう • テンプレートを「書く」のは慣れてからで十分 • 千里の道も一歩から C++マスターもBetter Cから
32.
おしまい • Let's C++!!!
Descargar ahora