探検
おまいらがワイにC++を1から教えるスレ
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/12/02(水) 07:55:19.15ID:u3DezFu7 全くのプログラム初心者のワイにC++を1から教えてちょんまげ
2020/12/02(水) 11:47:45.27ID:do1WpnXz
クソスレ立てるキチガイには教えません
2020/12/02(水) 13:08:26.42ID:BhIPzhZM
まずはパンツを脱ぎます
2020/12/02(水) 13:09:27.88ID:O0xkT2c9
首を左に90度曲げて、c++を見る。
ちょんまげ。
ちょんまげ。
5(u_・y) ◆e6.oHu1j.o
2020/12/02(水) 17:05:34.64ID:LINF+1vv (u_・y)1日でプログラミング出来るようになる(キリッ)って人達がよくPHPスレ等にいるから聞いてくると良いぞ
2020/12/02(水) 17:21:32.22ID:6jV30dAb
ワイって書いてあってプログラミングというと
何かJavaScriptやっててでも嫁と娘の方がよく書けるイメージ
何かJavaScriptやっててでも嫁と娘の方がよく書けるイメージ
2020/12/02(水) 19:13:14.50ID:PTC/KGjG
全くの初心者が C++ ってのはやめたほうがいいんじゃなかろうか。
いいとこ C# ぐらいからとか。
いいとこ C# ぐらいからとか。
2020/12/03(木) 00:55:42.95ID:zTFDF79p
C++/CLIから始めましょう
2020/12/03(木) 11:51:15.10ID:AYPEYoq4
C++について5年間無心に瞑想していると
突然天啓が降りてきて全てを理解する
これが一番の早道
突然天啓が降りてきて全てを理解する
これが一番の早道
2020/12/03(木) 13:41:30.40ID:qwumn+PG
>>8
止めといたほうが身のため
止めといたほうが身のため
11蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 16:23:56.88ID:XxeqeIdP a
これは小文字のエー。
A
これは大文字のエー。
アルファベットの最初の文字だよ。
これは小文字のエー。
A
これは大文字のエー。
アルファベットの最初の文字だよ。
12蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 16:25:02.95ID:XxeqeIdP b
これは小文字のビー。
B
これは大文字のビー。
ビーはアルファベットの二番目の文字だよ。
これは小文字のビー。
B
これは大文字のビー。
ビーはアルファベットの二番目の文字だよ。
13蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 16:30:56.37ID:XxeqeIdP c
これは小文字のシー。
C
これは大文字のシー。
シーはアルファベットの三番目の文字だよ。
これは小文字のシー。
C
これは大文字のシー。
シーはアルファベットの三番目の文字だよ。
14蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 16:37:40.74ID:JrbU6AmL ...(中略)...
z
これは小文字のゼット。
Z
これは大文字のゼット。
ゼットはアルファベットの二十六番目の文字だよ。
z
これは小文字のゼット。
Z
これは大文字のゼット。
ゼットはアルファベットの二十六番目の文字だよ。
15蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 16:40:39.87ID:JrbU6AmL !
これは感嘆符。びっくりしたときや、叫ぶときに使う。C++では否定を意味する。
?
これは疑問符。質問のときに使う。
これは感嘆符。びっくりしたときや、叫ぶときに使う。C++では否定を意味する。
?
これは疑問符。質問のときに使う。
16蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 16:44:13.07ID:XxeqeIdP #
これは、シャープ。ハッシュとか、ナンバーともいう。
*
これはアスタリスク。掛け算のときに使う。
キーボードでこうした記号を入力したい場合は、Shiftキーを押したまま、別のキーを押さなければならない。
これは、シャープ。ハッシュとか、ナンバーともいう。
*
これはアスタリスク。掛け算のときに使う。
キーボードでこうした記号を入力したい場合は、Shiftキーを押したまま、別のキーを押さなければならない。
17蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 19:03:31.14ID:XxeqeIdP 半角と全角の違いについて。
#$53abf
これは半角文字。
#$53abf
これは全角文字。全角の方が半角より幅が広い。プログラミングでは半角文字を主に使う。
#$53abf
これは半角文字。
#$53abf
これは全角文字。全角の方が半角より幅が広い。プログラミングでは半角文字を主に使う。
18蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 19:11:31.52ID:XxeqeIdP 拡張子とはファイル名の最後に付く、ドットで始まる、ファイルの種類を表す文字列。
例えば.txtはテキストファイルを表す拡張子。.cはC言語のソースファイルを表す拡張子。.cppはC++のソースファイルを表す拡張子。
ウィンドウズで拡張子を隠す設定になってる場合は、拡張子を常に表示するように設定して下さい。
では、C言語プログラムのソースを書いてみよう。
メモ帳を開いて。
#include <stdio.h>
int main(){
printf("hello, world\n");
}
これをhello.cという名前で保存。拡張子が.c.txtになった場合は.c に変更して。
例えば.txtはテキストファイルを表す拡張子。.cはC言語のソースファイルを表す拡張子。.cppはC++のソースファイルを表す拡張子。
ウィンドウズで拡張子を隠す設定になってる場合は、拡張子を常に表示するように設定して下さい。
では、C言語プログラムのソースを書いてみよう。
メモ帳を開いて。
#include <stdio.h>
int main(){
printf("hello, world\n");
}
これをhello.cという名前で保存。拡張子が.c.txtになった場合は.c に変更して。
19蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 19:15:23.46ID:XxeqeIdP <
これは不等号の「大なり」。
>
これは不等号の「小なり」。
"
これは二重引用符。
{ }
これは波カッコ。
( )
これは丸カッコ。
これは不等号の「大なり」。
>
これは不等号の「小なり」。
"
これは二重引用符。
{ }
これは波カッコ。
( )
これは丸カッコ。
20蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 19:18:45.46ID:XxeqeIdP \
これは半角の円記号。バックスラッシュともいう。
/
これはスラッシュ。
.
これはドット。終止符とか、ピリオドともいう。
,
これはカンマ。区切りに使う。
:
これはコロン。
;
これはセミコロン。
これは半角の円記号。バックスラッシュともいう。
/
これはスラッシュ。
.
これはドット。終止符とか、ピリオドともいう。
,
これはカンマ。区切りに使う。
:
これはコロン。
;
これはセミコロン。
21蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 19:30:41.49ID:XxeqeIdP 全角と半角の違い、コンマとドットの違い、コロンとセミコロンの違いがわからないと、プログラマーにはなれぬぞ。
ソースプログラムを動かすには、コンパイラというプログラムでコンパイルして、実行可能なファイルに変換する必要がある。コンパイラを用意しないとコンパイルできない。
コンパイラのインストール方法やコンパイル方法がわからない場合は、オンラインコンパイラの ideone.com を使えば、コンパイラをインストールしなくてもコンパイル・実行できる。
https://ideone.com
最初のうちは ideone で試してみよう。
ソースプログラムを動かすには、コンパイラというプログラムでコンパイルして、実行可能なファイルに変換する必要がある。コンパイラを用意しないとコンパイルできない。
コンパイラのインストール方法やコンパイル方法がわからない場合は、オンラインコンパイラの ideone.com を使えば、コンパイラをインストールしなくてもコンパイル・実行できる。
https://ideone.com
最初のうちは ideone で試してみよう。
22蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 19:36:12.89ID:XxeqeIdP ideoneの使い方。
1. 右下のボックスから言語(C++)を選ぶ。
2. ソースを隠すor貼り付ける。
3. Runボタンを押す。
かんたん、簡単。
1. 右下のボックスから言語(C++)を選ぶ。
2. ソースを隠すor貼り付ける。
3. Runボタンを押す。
かんたん、簡単。
24蟻人間 ◆T6xkBnTXz7B0
2020/12/03(木) 19:49:34.17ID:XxeqeIdP 続きを読むには、「ワッフルワッフル」と書き込んで下さい。
2020/12/06(日) 07:29:04.61ID:9Dsm0Weg
なにわともあれ、先ずtemplateと入力してから考えよう。
2020/12/07(月) 21:37:47.54ID:IvEQCqk0
まず2000万円用意します
2020/12/19(土) 12:25:26.61ID:j5nTXDk0
ワッフルワッフル
28蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 14:19:31.26ID:AdgNEvZP ideoneで次のC/C++プログラムを実行してみよう。
#include <stdio.h>
int main(void) {
int i;
for (i = 0; i < 10; ++i) {
printf("i: %d\n", i);
}
}
このプログラムはforループとループ変数iを使ってprintfによる標準出力に対する出力を十回繰り返す。コンピューターは繰り返し処理が得意である。
int i;は、整数(integer)型の変数iを宣言して、iという変数を使えるようにしている。
波カッコ{ }で囲まれた部分のことをブロックという。
変数は宣言されたブロックの内部でしか使えない。変数の使える範囲をスコープという。
#include <stdio.h>
int main(void) {
int i;
for (i = 0; i < 10; ++i) {
printf("i: %d\n", i);
}
}
このプログラムはforループとループ変数iを使ってprintfによる標準出力に対する出力を十回繰り返す。コンピューターは繰り返し処理が得意である。
int i;は、整数(integer)型の変数iを宣言して、iという変数を使えるようにしている。
波カッコ{ }で囲まれた部分のことをブロックという。
変数は宣言されたブロックの内部でしか使えない。変数の使える範囲をスコープという。
29蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 14:29:46.14ID:/5LHU1jG i = 0;
これは変数iに対するゼロの代入である。
i < 10
これはiと10を比較している。iが10より小さいと1になり、以下ならばゼロになる。
++i
これはiを1増やすという意味であり、1増やすことをインクリメントという。
printf関数は標準出力に書式付き文字列を出力する関数である。
関数というのは0個以上のパラメータ(引数)をカンマ区切りで指定して呼び出せる機能的な処理の単位である。
C/C++にはたくさんの関数が用意されている。標準で用意されている関数のことを標準関数と呼ぶ。
標準関数の使い方は、リファレンスマニュアルに書いてある。
これは変数iに対するゼロの代入である。
i < 10
これはiと10を比較している。iが10より小さいと1になり、以下ならばゼロになる。
++i
これはiを1増やすという意味であり、1増やすことをインクリメントという。
printf関数は標準出力に書式付き文字列を出力する関数である。
関数というのは0個以上のパラメータ(引数)をカンマ区切りで指定して呼び出せる機能的な処理の単位である。
C/C++にはたくさんの関数が用意されている。標準で用意されている関数のことを標準関数と呼ぶ。
標準関数の使い方は、リファレンスマニュアルに書いてある。
30蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 14:38:48.95ID:/5LHU1jG まずは、printf標準関数の使い方をリファレンスで確認しよう。
(日本語)
https://ja.cppreference.com/w/cpp/io/c/fprintf
(英語)
https://en.cppreference.com/w/cpp/io/c/fprintf
初めのうちは理解できないかもしれないが、さっと目を通してもらいたい。
(日本語)
https://ja.cppreference.com/w/cpp/io/c/fprintf
(英語)
https://en.cppreference.com/w/cpp/io/c/fprintf
初めのうちは理解できないかもしれないが、さっと目を通してもらいたい。
31蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 14:50:34.47ID:/5LHU1jG リファレンスはここにある:
https://ja.cppreference.com
リファレンスを完全に理解すればおそらくC/C++の達人になれる。まずは「C言語リファレンス」の「言語」から順番に読み進めるとよいだろう。
https://ja.cppreference.com
リファレンスを完全に理解すればおそらくC/C++の達人になれる。まずは「C言語リファレンス」の「言語」から順番に読み進めるとよいだろう。
32蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 14:58:13.77ID:/5LHU1jG オプションというのは、追加的な選択肢のことで、あってもなくてもいいものである。
戻り値とは関数の実行結果を返すためのものである。
例えば
int n;
n = printf("abc");
とすれば、nがprintf("abc")の"abc"の文字数3となる。
戻り値とは関数の実行結果を返すためのものである。
例えば
int n;
n = printf("abc");
とすれば、nがprintf("abc")の"abc"の文字数3となる。
33蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 15:30:02.52ID:/5LHU1jG では、Windowsをお使いであれば、MSYS2をインストールしよう。
...(中略)...
次にC言語ソースファイルhello.cを作成し、gcc -o hello hello.cを実行すればgccコンパイラがhello.exeを生成する。
C++では拡張子を.cppにしてg++コンパイラでコンパイルする: g++ -o hello hello.cpp
./helloを実行すると
Hello, world
と表示される。./は現在位置のフォルダ(ディレクトリ)を意味する(Bashなどではセキュリティのために必要だが、コマンドプロンプトでは必要ない)。
...(中略)...
次にC言語ソースファイルhello.cを作成し、gcc -o hello hello.cを実行すればgccコンパイラがhello.exeを生成する。
C++では拡張子を.cppにしてg++コンパイラでコンパイルする: g++ -o hello hello.cpp
./helloを実行すると
Hello, world
と表示される。./は現在位置のフォルダ(ディレクトリ)を意味する(Bashなどではセキュリティのために必要だが、コマンドプロンプトでは必要ない)。
34蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 15:59:21.66ID:/5LHU1jG pure C/C++では、ボタンやウィンドウなどのGUI(graphical user interface)は作れない。標準C/C++ではGUIが用意されてないからである。
C/C++でGUIを作るにはC++/Tcl、Win32API、MFC、WTL、GTK、wxWidgets、Qtなどを選び、言語とは別に学習する必要がある。
しかし、GUIの学習は難易度が高く、どれでもいい訳ではない。GUIの特徴を調べて自分に合ったものを選ぶ必要がある。
C/C++でGUIを作るにはC++/Tcl、Win32API、MFC、WTL、GTK、wxWidgets、Qtなどを選び、言語とは別に学習する必要がある。
しかし、GUIの学習は難易度が高く、どれでもいい訳ではない。GUIの特徴を調べて自分に合ったものを選ぶ必要がある。
35蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 18:36:05.93ID:/5LHU1jG 続きを読むには、「ワッフルワッフル」と書き込んで下さい。
2020/12/19(土) 19:23:29.77ID:Sj3ZjFN+
ワッフルワッフルワ
37蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 20:28:41.45ID:AdgNEvZP (1)
https://sehermitage.web.fc2.com/devel/win_msys2.html
に従ってMSYS2とgccとg++とmakeとcmakeとgitをインストールして下さい。
(2)
$ gcc --version
$ g++ --version
$ make --version
$ cmake --version
$ git --version
を順番に実行して正しくインストールされているか確認して下さい。
https://sehermitage.web.fc2.com/devel/win_msys2.html
に従ってMSYS2とgccとg++とmakeとcmakeとgitをインストールして下さい。
(2)
$ gcc --version
$ g++ --version
$ make --version
$ cmake --version
$ git --version
を順番に実行して正しくインストールされているか確認して下さい。
38蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 20:40:28.92ID:AdgNEvZP (3) プロジェクト「hello-cpp」
(3.1) 次のような内容のソースファイル「hello-cpp.cpp」を作成する。
#include <cstdio>
int main(void)
{
printf("Hello, C++!\n");
}
(3.2) 次のような内容のテキストファイル「CMakeLists.txt」を作成する。
cmake_minimum_required(VERSION 3.0)
project(hello-cpp CXX)
add_executable(hello-cpp hello-cpp.cpp)
(3.3) MSYS2で
$ cmake -G "MSYS Makefiles" .
$ make -j3
を実行する。成功すればhello-cpp.exeができる。
(3.4) $ ./hello-cpp.exeを実行すると「Hello, C++!」と表示される。
ここまでのソース:https://github.com/katahiromz/hello-cpp
(3.1) 次のような内容のソースファイル「hello-cpp.cpp」を作成する。
#include <cstdio>
int main(void)
{
printf("Hello, C++!\n");
}
(3.2) 次のような内容のテキストファイル「CMakeLists.txt」を作成する。
cmake_minimum_required(VERSION 3.0)
project(hello-cpp CXX)
add_executable(hello-cpp hello-cpp.cpp)
(3.3) MSYS2で
$ cmake -G "MSYS Makefiles" .
$ make -j3
を実行する。成功すればhello-cpp.exeができる。
(3.4) $ ./hello-cpp.exeを実行すると「Hello, C++!」と表示される。
ここまでのソース:https://github.com/katahiromz/hello-cpp
39蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 20:48:45.69ID:AdgNEvZP (4) C++/Win32でハローワールド。
(4.1) MSYS2上で
$ git clone https://github.com/katahiromz/HelloWin32
を実行する。現在の位置にHelloWin32フォルダができる。
(4.2) $ cd HelloWin32を実行してフォルダの中に入る。
(4.3) ビルドする。
$ cmake -G "MSYS Makefiles" .
$ make -j3
buildフォルダの中にHelloWin32.exeができる。
(4.4) build/HelloWin32.exeをダブルクリックして動作を確認する。
(4.1) MSYS2上で
$ git clone https://github.com/katahiromz/HelloWin32
を実行する。現在の位置にHelloWin32フォルダができる。
(4.2) $ cd HelloWin32を実行してフォルダの中に入る。
(4.3) ビルドする。
$ cmake -G "MSYS Makefiles" .
$ make -j3
buildフォルダの中にHelloWin32.exeができる。
(4.4) build/HelloWin32.exeをダブルクリックして動作を確認する。
40蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 20:53:23.93ID:AdgNEvZP (5) プロジェクトHelloWin32のダイアログを編集する。
(5.1) HelloWin32のリソースファイル「HelloWin32_res.rc」をリソーエディタで
開いてダイアログを編集し、同名で保存する。
例えばボタンの位置を移動させたり、サイズを変更したりする。
リソーエディタ
https://katahiromz.web.fc2.com/re/ja/
(5.2) $ make -j3を実行してリビルドする。新しいbuild/HelloWin32.exeができる。
(5.3) HelloWin32.exeをダブルクリックして前回と比較する。
(5.1) HelloWin32のリソースファイル「HelloWin32_res.rc」をリソーエディタで
開いてダイアログを編集し、同名で保存する。
例えばボタンの位置を移動させたり、サイズを変更したりする。
リソーエディタ
https://katahiromz.web.fc2.com/re/ja/
(5.2) $ make -j3を実行してリビルドする。新しいbuild/HelloWin32.exeができる。
(5.3) HelloWin32.exeをダブルクリックして前回と比較する。
41蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 21:03:34.66ID:AdgNEvZP (6) HelloWin32の解説(その1)。
(6.1) HelloWin32.cppのLoadStringDx関数は、LoadString API関数を使用して
STRINGTABLEリソースから文字列を読み込む関数である。
(6.2) DialogProcは、ダイアログのふるまいを決定づけるダイアログプロシージャと
呼ばれる関数であり、後述のDialogBoxWで使用する。
(6.3) OnInitDialog関数はダイアログの初期化を行うもので、
ダイアログにWM_INITDIALOGメッセージが来たときに呼び出される。
(6.4) OnCommand関数は、WM_COMMANDメッセージが来たときに呼び出される。
これは何らかのイベント(ボタンを押すなど)に対して、何かのコマンドを実行する関数である。
(6.5) WinMain関数は、Win32アプリで最初に呼び出される関数である。
(6.6) DialogBoxWはDialogBox関数のUnicode版であり、DialogBox API関数は
DIALOGリソースを元にしてモーダルなダイアログを表示するのに使う。
(6.7) MessageBoxWはMessageBox関数のUnicode版であり、メッセージボックスを表示するのに使う。
(6.1) HelloWin32.cppのLoadStringDx関数は、LoadString API関数を使用して
STRINGTABLEリソースから文字列を読み込む関数である。
(6.2) DialogProcは、ダイアログのふるまいを決定づけるダイアログプロシージャと
呼ばれる関数であり、後述のDialogBoxWで使用する。
(6.3) OnInitDialog関数はダイアログの初期化を行うもので、
ダイアログにWM_INITDIALOGメッセージが来たときに呼び出される。
(6.4) OnCommand関数は、WM_COMMANDメッセージが来たときに呼び出される。
これは何らかのイベント(ボタンを押すなど)に対して、何かのコマンドを実行する関数である。
(6.5) WinMain関数は、Win32アプリで最初に呼び出される関数である。
(6.6) DialogBoxWはDialogBox関数のUnicode版であり、DialogBox API関数は
DIALOGリソースを元にしてモーダルなダイアログを表示するのに使う。
(6.7) MessageBoxWはMessageBox関数のUnicode版であり、メッセージボックスを表示するのに使う。
42蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 21:12:44.44ID:AdgNEvZP (7) HelloWin32の解説(その2)。
(7.1) DialogProcのHANDLE_MSGはメッセージの処理を行うためのマクロである。
HANDLE_MSGを使うには<windowsx.h>が必要。
(7.2) MsgCrackというプログラムを使えばOnInitDialogやOnCommandなどのプロトタイプを
簡単に入力できる。
MsgCrack
https://katahiromz.web.fc2.com/msgcrack/ja/
(7.3) lang/ja_JP.rcをテキストエディタで開けばDIALOGリソースやSTRINGTABLEリソースが確認できる。
テキストエディタの「サクラエディタ」
https://sakura-editor.github.io/
(7.4) CMakeLists.txtはcmakeによるビルド方法を指示するファイルである。
MSYS2ではcmakeはMakefileを作成し、makeコマンドがMakefileを元に
実際にビルドする。
(7.5) .gitignoreはバージョン管理システムのGitに無視したいファイルやフォルダを指示するファイルである。
(7.1) DialogProcのHANDLE_MSGはメッセージの処理を行うためのマクロである。
HANDLE_MSGを使うには<windowsx.h>が必要。
(7.2) MsgCrackというプログラムを使えばOnInitDialogやOnCommandなどのプロトタイプを
簡単に入力できる。
MsgCrack
https://katahiromz.web.fc2.com/msgcrack/ja/
(7.3) lang/ja_JP.rcをテキストエディタで開けばDIALOGリソースやSTRINGTABLEリソースが確認できる。
テキストエディタの「サクラエディタ」
https://sakura-editor.github.io/
(7.4) CMakeLists.txtはcmakeによるビルド方法を指示するファイルである。
MSYS2ではcmakeはMakefileを作成し、makeコマンドがMakefileを元に
実際にビルドする。
(7.5) .gitignoreはバージョン管理システムのGitに無視したいファイルやフォルダを指示するファイルである。
43蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 21:19:37.31ID:AdgNEvZP (8) メッセージボックスだけの単純なWin32プログラムMsgBoxを作成する。
(8.1) MsgBoxというフォルダを作成する。
(8.2) 次のような内容でMsgBox.cppという名前のファイルを作成する。
#include <windows.h>
int main(void) {
MessageBoxA(NULL, "This is a Windows application", "Info", 0);
}
(8.3) 次のような内容のCMakeLists.txtを作成する。
cmake_minimum_required(VERSION 3.0)
project(MsgBox CXX)
add_executable(MsgBox MsgBox.cpp)
(8.4)
$ cmake -G "MSYS Makefiles" .
$ make
を順番に実行して、MsgBox.exeをビルドする。
(8.5) MSYS2で./MsgBox.exeを実行して動作を確認する。
(8.1) MsgBoxというフォルダを作成する。
(8.2) 次のような内容でMsgBox.cppという名前のファイルを作成する。
#include <windows.h>
int main(void) {
MessageBoxA(NULL, "This is a Windows application", "Info", 0);
}
(8.3) 次のような内容のCMakeLists.txtを作成する。
cmake_minimum_required(VERSION 3.0)
project(MsgBox CXX)
add_executable(MsgBox MsgBox.cpp)
(8.4)
$ cmake -G "MSYS Makefiles" .
$ make
を順番に実行して、MsgBox.exeをビルドする。
(8.5) MSYS2で./MsgBox.exeを実行して動作を確認する。
2020/12/19(土) 21:23:16.13ID:SjgWLpk6
でも何で拡張子.cppでCなん?
それとシープラプラの書式ならCと違ってmainの引数にvoidは書かんよ
それとシープラプラの書式ならCと違ってmainの引数にvoidは書かんよ
45蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 21:30:37.30ID:AdgNEvZP (9) MsgBoxを少し改変する。
(9.1) 「int main(void)」をINT WINAPI
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)
に変更する(MsgCrackで「WinMain」を検索すること)。
WinMainのブロックの最後に「return 0;」を追加する。
(9.2) CMakeLists.txtの「add_executable(MsgBox MsgBox.cpp)」を
「add_executable(MsgBox WIN32 MsgBox.cpp)」に変更する(WIN32を追加する)。
(9.3) add_executableの前に
「set(CMAKE_EXE_LINKER_FLAGS "-static")」を追記する。
これでダブルクリックで実行できる。
(9.4) $ make を実行すると、新しいMsgBox.exeができる。
(9.5) このMsgBox.exeをダブルクリックして実行しても黒い画面は出ない。
ダブルクリックすると、最初に例の黒い画面が出るアプリのことを「コンソールアプリ」と呼び、
黒い画面が出ないアプリのことを「Windowsアプリ」と呼ぶ。
(9.1) 「int main(void)」をINT WINAPI
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)
に変更する(MsgCrackで「WinMain」を検索すること)。
WinMainのブロックの最後に「return 0;」を追加する。
(9.2) CMakeLists.txtの「add_executable(MsgBox MsgBox.cpp)」を
「add_executable(MsgBox WIN32 MsgBox.cpp)」に変更する(WIN32を追加する)。
(9.3) add_executableの前に
「set(CMAKE_EXE_LINKER_FLAGS "-static")」を追記する。
これでダブルクリックで実行できる。
(9.4) $ make を実行すると、新しいMsgBox.exeができる。
(9.5) このMsgBox.exeをダブルクリックして実行しても黒い画面は出ない。
ダブルクリックすると、最初に例の黒い画面が出るアプリのことを「コンソールアプリ」と呼び、
黒い画面が出ないアプリのことを「Windowsアプリ」と呼ぶ。
47蟻人間 ◆T6xkBnTXz7B0
2020/12/19(土) 22:06:18.46ID:/5LHU1jG 定番のWin32学習サイト。
・MSDN
・EternalWindows
・猫でもできるプログラミング
・WisdomSoft(旧)
参考にしてね。
・MSDN
・EternalWindows
・猫でもできるプログラミング
・WisdomSoft(旧)
参考にしてね。
2020/12/19(土) 22:37:48.42ID:addgFCLw
めんどくさーい
2020/12/26(土) 04:56:17.90ID:MmCRaN+2
まずはラムダ式から教えようかな
2020/12/26(土) 05:14:20.66ID:IS/9s11k
ラムダ式があると何が便利かも書いて欲しい。
2020/12/27(日) 00:00:27.09ID:3O0UlW8w
この業界の権威にでもなりたいんでなければC++は開発ブランチだと思って美味しいとこだけcherry-pickした言語使った方がいいと思うよ。
2020/12/27(日) 00:48:15.94ID:JCBOGJxb
>>51
例えば?
例えば?
2020/12/27(日) 12:32:57.26ID:VwRLyYFg
ワッフルワッフル
2020/12/27(日) 14:30:54.32ID:3O0UlW8w
>>52
Javaが筆頭やね
Javaが筆頭やね
2020/12/27(日) 15:46:21.74ID:u2IOFb+r
>>51
最近のC++ってC#などから取り入れてる機能も多いだろ
最近のC++ってC#などから取り入れてる機能も多いだろ
2020/12/27(日) 17:47:43.17ID:3O0UlW8w
>>56
老いては子に教えられ、だね
老いては子に教えられ、だね
2021/01/02(土) 18:40:40.10ID:89HkmNsX
2021/01/03(日) 20:21:52.71ID:bRO3e+JV
Javaに限定してないが
2021/01/04(月) 04:06:06.18ID:vXy+uC1b
>>59
屁理屈言うなよ
屁理屈言うなよ
2021/01/04(月) 09:13:24.81ID:v1M5xjgk
>>60
つまりJavaに続くクラスベースの他の言語もいずれ死にゆくからC++以外は学ばなくても良いと言いたいのか?
つまりJavaに続くクラスベースの他の言語もいずれ死にゆくからC++以外は学ばなくても良いと言いたいのか?
2021/01/04(月) 11:46:38.28ID:OpGFyjtN
死にゆくのが目に見えてる言語勧めるくらいならそうだろうな
で、Java以外にC++からcherry-pickした死の見えてる言語あるの?
で、Java以外にC++からcherry-pickした死の見えてる言語あるの?
63蟻人間 ◆T6xkBnTXz7B0
2021/01/04(月) 19:44:51.64ID:RRkyDjZk ちゃんとリファレンスも示したし、コンパイルのしかたも書いた。自分で学習して、他にもわからないことがあれば質問してね。
64デフォルトの名無しさん
2021/01/04(月) 20:38:52.91ID:wIiDK2+4 Javaの何が凄かったかって、文法がLALR(1)に収まってるんだよな。
文法を作ったことがあれば、天才にしか無理なことがわかるだろう。
そう、奴は本物の天才だ。
誰が作ったのか知らんけど。
文法を作ったことがあれば、天才にしか無理なことがわかるだろう。
そう、奴は本物の天才だ。
誰が作ったのか知らんけど。
65デフォルトの名無しさん
2021/01/04(月) 21:17:14.33ID:wIiDK2+4 割り切りもすごいよな。
プリミティブはコピー渡し、それ以外は参照渡し。
たしかにそれは良い考えだと思うけど、スパッと割り切ったのが凄いな。
我々がその立場なら同じことが出来ただろうか?
まあしかし、C++と比べるものではないよな。
対象領域が被ってるので比べたくなるが、狙いが違うので、綺麗に住み分けが出来ると思う。
プリミティブはコピー渡し、それ以外は参照渡し。
たしかにそれは良い考えだと思うけど、スパッと割り切ったのが凄いな。
我々がその立場なら同じことが出来ただろうか?
まあしかし、C++と比べるものではないよな。
対象領域が被ってるので比べたくなるが、狙いが違うので、綺麗に住み分けが出来ると思う。
2021/01/05(火) 00:51:36.88ID:BHDE7fBu
配置newはどんな時に使うの?
2021/01/05(火) 01:35:28.72ID:tS+yAQzd
2021/01/05(火) 12:00:55.46ID:BHDE7fBu
>>68
allocatorでメモリ確保して配置newで初期化?
allocatorでメモリ確保して配置newで初期化?
71蟻人間 ◆T6xkBnTXz7B0
2021/01/05(火) 17:07:18.70ID:A4RAMnFV char buf[sizeof(std::string)];
std::string *pstr = new(buf) std::string;
*pstr = "test";
std::puts(pstr->c_str());
pstr->~basic_string();
汚いコードだね。
std::string *pstr = new(buf) std::string;
*pstr = "test";
std::puts(pstr->c_str());
pstr->~basic_string();
汚いコードだね。
72蟻人間 ◆T6xkBnTXz7B0
2021/01/05(火) 18:13:27.15ID:Nygh6omE 何らかの連続したメモリーブロックを指すポインタがあって、そこをコンストラクタで初期化するときに使うんでないかい?
2021/01/06(水) 00:02:56.17ID:2hpPqzu4
ゲームエンジンの本によく書いてある、タスクシステムとかだろ
例えば、弾100個分のメモリを、事前にキープしておくとか。
1個ずつ確保すると、メモリの断片化が起こるから
例えば、弾100個分のメモリを、事前にキープしておくとか。
1個ずつ確保すると、メモリの断片化が起こるから
2021/01/10(日) 23:10:15.53ID:AxUCQbZG
>>19
大なりと小なり逆だぞ
大なりと小なり逆だぞ
2021/01/11(月) 00:11:32.57ID:eNWdcNvL
これは恥ずかしい
2021/01/14(木) 16:10:21.69ID:t4C1HzYM
そうでもない
2021/01/14(木) 16:20:55.01ID:D3V1bvbS
足すと引く間違えてるようなもの
2021/01/15(金) 00:27:45.68ID:kCwrH4rk
だいな
2021/01/15(金) 00:29:11.34ID:kCwrH4rk
みっく
2021/01/15(金) 00:56:24.72ID:wdDcsVvR
ディスィザペーン
なんだバカヤロー
なんだバカヤロー
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【STARTO ENTERTAINMENT】timelesz篠塚大輝『大きな古時計』替え歌一発ギャグ「今はもう動かない おじいさんにトドメ~♪」が波紋 [Ailuropoda melanoleuca★]
- 【社会】40代以上のおじさん・おばさんは叩いてオッケーという風潮はなぜ加速したのか [七波羅探題★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- ラーメン屋「日高屋が安いせいで客が来ない!日高屋はもっと値上げしろ!」 [449534113]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【悲報】オックスフォード大学「日本で影響力のある人」ランキングを公表。1位西村博之氏、2位堀江貴文氏、3位高橋洋一氏 [566475398]
