!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
※前スレ
C言語なら俺に聞け 156
https://mevius.5ch.net/test/read.cgi/tech/1601271690/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 157
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 0345-kMi9)
2021/06/28(月) 11:22:51.50ID:so+vl3vs0933デフォルトの名無しさん (スッップ Sd70-6a6v)
2021/12/05(日) 04:30:24.51ID:VQoGm9OLd 47氏こと金子氏はMFCでWinnyを作ったんだな
934デフォルトの名無しさん (ワッチョイ aee9-BBtJ)
2021/12/05(日) 15:55:33.73ID:HAXCanWR0 >>933
winny2 は BCC/OWL だったと聞いた気がします
winny2 は BCC/OWL だったと聞いた気がします
935デフォルトの名無しさん (スッップ Sd70-6a6v)
2021/12/05(日) 16:50:16.47ID:VQoGm9OLd RIP
936デフォルトの名無しさん (ワッチョイ aee9-BBtJ)
2021/12/05(日) 18:32:01.15ID:HAXCanWR0 >>932
ありがとうございます!
ありがとうございます!
937デフォルトの名無しさん (ワッチョイ aee9-BBtJ)
2021/12/07(火) 05:13:43.34ID:WxNsBn2X0 >>934
金子氏の書籍より、VC++ から C++Builder に GUI の変更を目的に変えた、との記述を見つけました
Borland C++ Builder 4.0, および 5.0 であれば OWL5.0 をサポートしていますが、VCL の可能性のほうが高いですね
金子氏の書籍より、VC++ から C++Builder に GUI の変更を目的に変えた、との記述を見つけました
Borland C++ Builder 4.0, および 5.0 であれば OWL5.0 をサポートしていますが、VCL の可能性のほうが高いですね
938デフォルトの名無しさん (ワッチョイ b6e7-qcc3)
2021/12/08(水) 16:27:00.62ID:iGfgkXA80 Windows上で編集してLinux上でコンパイルしたいんだけど
そういうのに適したIDEでお前らが使ってるおすすめを教えて
そういうのに適したIDEでお前らが使ってるおすすめを教えて
939デフォルトの名無しさん (ワッチョイ ba02-TfuE)
2021/12/08(水) 18:39:45.04ID:RLv6UJuP0 >>938
vscode
vscode
940デフォルトの名無しさん (ワッチョイ d02c-oWHg)
2021/12/08(水) 18:59:09.17ID:GPDURn2W0 Ruby on Rails では、WSL2, Linux, Docker, VSCode(Remote Container, Remote WSL)など、
本物のLinux(CUI)で開発できる。
MSYS2/MinGW みたいなWindows でコンパイルした、日本語でバグるものを使う必要もない
Dockerを使わずに、日本人が作った、バージョンマネージャーのanyenv で、
rbenv, nodenv, pyenv など、多言語を統一的に扱う事もできる
組み込み用mruby の本には、Virtualbox, Vagrant を使う。
WSLはサポートしないと書いてあるけど、WSLでも使えるかも?
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
人工衛星イザナギ・イザナミで、使っている
本物のLinux(CUI)で開発できる。
MSYS2/MinGW みたいなWindows でコンパイルした、日本語でバグるものを使う必要もない
Dockerを使わずに、日本人が作った、バージョンマネージャーのanyenv で、
rbenv, nodenv, pyenv など、多言語を統一的に扱う事もできる
組み込み用mruby の本には、Virtualbox, Vagrant を使う。
WSLはサポートしないと書いてあるけど、WSLでも使えるかも?
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
人工衛星イザナギ・イザナミで、使っている
941デフォルトの名無しさん (ワッチョイ ce01-1kDn)
2021/12/08(水) 20:28:27.76ID:pzF9gjPk0942デフォルトの名無しさん (ワッチョイ d910-PP5C)
2021/12/09(木) 11:14:02.01ID:89810ylo0 実用的なところで夜間に移動する北のミサイル発射トラック追尾。
個人的希望でgoogleカーの追尾。
個人的希望でgoogleカーの追尾。
943デフォルトの名無しさん (スッップ Sd70-6a6v)
2021/12/09(木) 13:22:59.56ID:avfziXHId 頭頂部が日に日に薄くなっていくような気がするから
その辺のチェックを毎日やってほしい
その辺のチェックを毎日やってほしい
944デフォルトの名無しさん (ワッチョイ c063-cP/Y)
2021/12/09(木) 13:26:11.16ID:NPIqJHRg0 >Linux上でコンパイルしたい
Linuxのシェル上でコンパイルしたいという意味?
それともGCCを使いたいという意味?
Linuxのシェル上でコンパイルしたいという意味?
それともGCCを使いたいという意味?
945デフォルトの名無しさん (ワッチョイ dfad-8/hI)
2021/12/10(金) 02:07:06.32ID:Uh57IFJZ0 そう言えば以前 Windows で動く IDE で Linux で動くプログラムの編集をしてそのまま
リモートで Linux 側でコンパイルして更にリモートでデバッグまでできれば良いなと
思ったが、どうやらそれができるものはなさそうなので諦めて Linux 上で IDE を動かした。
まあでもクロス開発というか、リモートデバッグというか、そういうのが出来ると便利だよな。
リモートで Linux 側でコンパイルして更にリモートでデバッグまでできれば良いなと
思ったが、どうやらそれができるものはなさそうなので諦めて Linux 上で IDE を動かした。
まあでもクロス開発というか、リモートデバッグというか、そういうのが出来ると便利だよな。
946デフォルトの名無しさん (ワッチョイ bfe7-4DaK)
2021/12/10(金) 09:42:22.14ID:bMtT4XMq0 >>944
Linuxにインストールしてあるgccでコンパイルしたい
ビルドボタン押したらssh経由でmakeできたら素敵だが
使ってるgccのバージョンがちょっとどころじゃなく古いので
できればMinGW gccとかじゃなくて現物のgcc使いたい感じ
Linuxにインストールしてあるgccでコンパイルしたい
ビルドボタン押したらssh経由でmakeできたら素敵だが
使ってるgccのバージョンがちょっとどころじゃなく古いので
できればMinGW gccとかじゃなくて現物のgcc使いたい感じ
947デフォルトの名無しさん (ワッチョイ df02-cLCX)
2021/12/10(金) 11:35:51.37ID:vRQI3bYg0 上でも書いたけど vs code ではダメなの?
ターゲットが WSL、コンテナ、ssh 接続関係なく
Win 環境から編集、コンパイル、デバッグ一通りなんでもできるよ。
ターゲットが WSL、コンテナ、ssh 接続関係なく
Win 環境から編集、コンパイル、デバッグ一通りなんでもできるよ。
948デフォルトの名無しさん (ワッチョイ bfe7-4DaK)
2021/12/10(金) 14:06:37.92ID:bMtT4XMq0 そこまでおっしゃるのなら、試してさしあげてもよろしくってよ?
949デフォルトの名無しさん (ワッチョイ 7fbb-xF/V)
2021/12/10(金) 15:29:28.42ID:IPFkCC9z0 歯ね
950デフォルトの名無しさん (ワッチョイ 4746-rE6U)
2021/12/10(金) 18:11:12.39ID:7gXx5u630 羽?
951デフォルトの名無しさん (ワッチョイ 6763-xLgN)
2021/12/10(金) 18:59:12.87ID:wbbsNkrV0 教えて差し上げて
952デフォルトの名無しさん (ワッチョイ dfad-8/hI)
2021/12/11(土) 03:38:45.47ID:LF8J+dNV0 >>945 を昨日書いたが、さっきこんなの見つけた。有料だけどな。
JetBrains、リモート開発機能と軽量IDE「Fleet」を発表
https://japan.zdnet.com/article/35180131/
JetBrains、リモート開発機能と軽量IDE「Fleet」を発表
https://japan.zdnet.com/article/35180131/
953940 (ワッチョイ 7f2c-yjVA)
2021/12/11(土) 13:26:00.16ID:iDGs+tOs0 漏れは、Ruby on Rails, WSL2, Ubuntu 18.04 で、
Web Socket など、Railsで使う各モジュールがネイティブコンパイルされるけど、
build-essential とか入れておけば、
Rails のインストール時に、勝手にコンパイルされる
build-essential には、
gcc(GNU C compiler), g++(GNU C++ compiler), libc6-dev(GNU C Library), make などが入っています
パッケージ: build-essential
https://packages.ubuntu.com/ja/bionic/build-essential
43.0 MB のアーカイブを取得して、165 MB のディスク容量が使われます
Web Socket など、Railsで使う各モジュールがネイティブコンパイルされるけど、
build-essential とか入れておけば、
Rails のインストール時に、勝手にコンパイルされる
build-essential には、
gcc(GNU C compiler), g++(GNU C++ compiler), libc6-dev(GNU C Library), make などが入っています
パッケージ: build-essential
https://packages.ubuntu.com/ja/bionic/build-essential
43.0 MB のアーカイブを取得して、165 MB のディスク容量が使われます
954デフォルトの名無しさん (スプッッ Sd7f-9zNQ)
2021/12/11(土) 22:36:35.78ID:KvUnFidtd VS2022に昔のプログラム持ってったら
isspace()とかに80h以上の文字入れると例外になるけど
いいのかこれ
テーブルで処理してて80h以上は負だからテーブル外になるって理由はわかるんだけどさあ
昔のはなんとかうまくやってた気がするんだけど
isspace()とかに80h以上の文字入れると例外になるけど
いいのかこれ
テーブルで処理してて80h以上は負だからテーブル外になるって理由はわかるんだけどさあ
昔のはなんとかうまくやってた気がするんだけど
955デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/12(日) 01:29:13.77ID:xqkchTt80 >>954 それ char で負の値を渡してるんじゃね?
956デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/12(日) 01:30:08.80ID:xqkchTt80957ハノン ◆QZaw55cn4c (ワッチョイ bfe9-cB3R)
2021/12/12(日) 06:11:48.38ID:i1KpRZU20958はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 873e-8/hI)
2021/12/12(日) 11:16:13.91ID:553p9mhC0 char が符号付か符号無しかは処理系定義で、
符号無しであるような処理系では char が int に拡張されたときに負数になることはない。
(考慮する必要はない。)
C にはそういう処理系定義とか未規定とか未定義がもりだくさんなので
ある処理系の定義では未定義を踏まずに済むプログラムでも
別の処理系では (処理系定義のコンボで結果的に) 未定義に引っかかることはよくある。
C のプログラムで完全に処理系定義や未規定を避けるというのは困難な話だし、
(可能なら環境依存を避けるように意識するのは良い作法ではあるけど)
違う環境に持ってきたらその程度の修正は必要なものだと思って諦めるしかしょうがない。
符号無しであるような処理系では char が int に拡張されたときに負数になることはない。
(考慮する必要はない。)
C にはそういう処理系定義とか未規定とか未定義がもりだくさんなので
ある処理系の定義では未定義を踏まずに済むプログラムでも
別の処理系では (処理系定義のコンボで結果的に) 未定義に引っかかることはよくある。
C のプログラムで完全に処理系定義や未規定を避けるというのは困難な話だし、
(可能なら環境依存を避けるように意識するのは良い作法ではあるけど)
違う環境に持ってきたらその程度の修正は必要なものだと思って諦めるしかしょうがない。
959デフォルトの名無しさん (ワッチョイ 7f0e-4DaK)
2021/12/12(日) 11:27:28.68ID:0XY4m15b0 未規定を避ける必要はない
未規定のブレ幅以内に収まるように書いてあるプログラムは適格
そうでないプログラムは不適格で未定義の動作となるだけだ
未規定のブレ幅以内に収まるように書いてあるプログラムは適格
そうでないプログラムは不適格で未定義の動作となるだけだ
960デフォルトの名無しさん (ワッチョイ a710-yRuc)
2021/12/12(日) 17:20:11.74ID:lpH8MLUG0 未規定と、明示的な未定義は違うのか?
961デフォルトの名無しさん (ワッチョイ 7f0e-4DaK)
2021/12/12(日) 17:33:46.14ID:0XY4m15b0 違う。
たとえば
int f1(), f2();
int a = f1() - f2();
のようなことをしているとき、
f1とf2の評価順序は未規定
f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ
たとえば
int f1(), f2();
int a = f1() - f2();
のようなことをしているとき、
f1とf2の評価順序は未規定
f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ
962デフォルトの名無しさん (ワッチョイ 6763-xLgN)
2021/12/12(日) 17:44:58.99ID:Qvw+czy00 未規定って処理系毎に好きに実装して良いんでしたっけ?
963デフォルトの名無しさん (ワッチョイ a7da-u2LQ)
2021/12/12(日) 17:55:44.75ID:YDRHEr6M0 処理系が好きに実装してよいし, ひとつの処理系の中で一貫している必要も, ドキュメントに明記する必要もない
964デフォルトの名無しさん (ワッチョイ 6763-xLgN)
2021/12/12(日) 17:58:06.91ID:Qvw+czy00 未定義動作だと、最悪SEGVでも良いようなオイ
965デフォルトの名無しさん (ワッチョイ a7da-u2LQ)
2021/12/12(日) 17:59:00.60ID:YDRHEr6M0 SEGVはマシな方なんですが
966はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 873e-8/hI)
2021/12/12(日) 18:09:59.00ID:553p9mhC0967デフォルトの名無しさん (ドコグロ MM9f-JVtf)
2021/12/12(日) 18:12:53.56ID:aAJ0FK40M >>962
処理系どころか同じソースでもコンパイル毎に変えることすら許される
処理系どころか同じソースでもコンパイル毎に変えることすら許される
968デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/12(日) 19:00:18.24ID:xqkchTt80969デフォルトの名無しさん (ワッチョイ bf66-cB3R)
2021/12/12(日) 23:13:30.38ID:VXD697/Q0 >>968
いやあってる
演算子の結合規則・優先順位は、あくまでも複数の演算子があったときにどの演算子を先に処理するか、に過ぎない
オペランドを二つ持つ演算子一つに限れば、どっちのオペランドを先に評価するかは処理系依存だったと思う
これは関数の引数についても同じ
いやあってる
演算子の結合規則・優先順位は、あくまでも複数の演算子があったときにどの演算子を先に処理するか、に過ぎない
オペランドを二つ持つ演算子一つに限れば、どっちのオペランドを先に評価するかは処理系依存だったと思う
これは関数の引数についても同じ
970デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/12(日) 23:20:10.63ID:xqkchTt80 >>969
だれも結合優先度の話はしてないと思う。
> f1とf2の評価順序は未規定
これについては未規定で異論は無いんだよ。
> f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ
でも、こっちは嘘じゃね?という話。そんな規定文面確認できない。
だれも結合優先度の話はしてないと思う。
> f1とf2の評価順序は未規定
これについては未規定で異論は無いんだよ。
> f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ
でも、こっちは嘘じゃね?という話。そんな規定文面確認できない。
971デフォルトの名無しさん (ワッチョイ a7da-u2LQ)
2021/12/13(月) 00:34:13.21ID:0Z9P9uJp0 C17Draftのpp.65 6.5 1では?
> If a side effect on a scalar object is unsequenced relative to either a different side effect on the same scalar object or a value computation using the value of the same scalar object, the behavior is undefined.
> If there are multiple allowable orderings of the subexpressions of an expression, the behavior is undefined if such an unsequenced side effect occurs in any of the orderings.
> If a side effect on a scalar object is unsequenced relative to either a different side effect on the same scalar object or a value computation using the value of the same scalar object, the behavior is undefined.
> If there are multiple allowable orderings of the subexpressions of an expression, the behavior is undefined if such an unsequenced side effect occurs in any of the orderings.
972デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/13(月) 01:22:45.02ID:aR9zk0xx0 >>971
複数の関数呼び出し先にある評価同士、あるいは呼び出し元と呼び出し先にある評価同士は
indeterminately sequenced となり、 unsequenced にはならない。
6.5.2.2 Function calls p10
> ... Every evaluation in the calling function (including other function calls)
> that is not otherwise specifically sequenced before or after the execution of the body of the called
> function is indeterminately sequenced with respect to the execution of the called function. 96)
...
> 96) In other words, function executions do not “interleave” with each other.
>961 の f1, f2 は関数なので、 f1() - f2() の結果が未規定だからといって未定義動作にはならない。
複数の関数呼び出し先にある評価同士、あるいは呼び出し元と呼び出し先にある評価同士は
indeterminately sequenced となり、 unsequenced にはならない。
6.5.2.2 Function calls p10
> ... Every evaluation in the calling function (including other function calls)
> that is not otherwise specifically sequenced before or after the execution of the body of the called
> function is indeterminately sequenced with respect to the execution of the called function. 96)
...
> 96) In other words, function executions do not “interleave” with each other.
>961 の f1, f2 は関数なので、 f1() - f2() の結果が未規定だからといって未定義動作にはならない。
973デフォルトの名無しさん (ワッチョイ a7da-u2LQ)
2021/12/13(月) 02:53:30.01ID:0Z9P9uJp0 >>972
OK, 関数呼び出しを噛ませたことで評価順序が未規定ではなく不定(一方が他方の後(先)であることは保証される)になるので, 呼出先関数で副作用があっても(結果は未規定だが)未定義動作ではない, と
確かによくある a = i++ + ++i; みたいな例が適切だったか
OK, 関数呼び出しを噛ませたことで評価順序が未規定ではなく不定(一方が他方の後(先)であることは保証される)になるので, 呼出先関数で副作用があっても(結果は未規定だが)未定義動作ではない, と
確かによくある a = i++ + ++i; みたいな例が適切だったか
974デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/13(月) 03:50:46.86ID:aR9zk0xx0 >>973
あともう1点念のため。
その例 a = i++ + ++i は未定義動作になる例として適切なんだけど、未定義動作になる理由は >971 の規定であって、
>961 の「評価順序によりaに入る値が変動する場合」というような理由じゃない。
例えば a = (i = 0) + (i = 0) は、どっちの i = 0 を先に評価しても a に入る値は 0 で変動しないけど、未定義動作となる。
あともう1点念のため。
その例 a = i++ + ++i は未定義動作になる例として適切なんだけど、未定義動作になる理由は >971 の規定であって、
>961 の「評価順序によりaに入る値が変動する場合」というような理由じゃない。
例えば a = (i = 0) + (i = 0) は、どっちの i = 0 を先に評価しても a に入る値は 0 で変動しないけど、未定義動作となる。
975デフォルトの名無しさん (ワッチョイ bfe7-4DaK)
2021/12/14(火) 17:26:28.72ID:LP8Fmqr90 自作ライブラリのヘッダと標準関数のヘッダの読み込み順って
なにか決まりごとはあるの?
#include "jisaku.h"
#include <stdio.h>
ってやってたらキモイって言われたんだけど、これなんかおかしいか?
インクルードガード利いてるし順番なんてどうでもいいだろ っていうか
だったら自作のヘッダが先に来るべきだろ って思うんだけど
なにか決まりごとはあるの?
#include "jisaku.h"
#include <stdio.h>
ってやってたらキモイって言われたんだけど、これなんかおかしいか?
インクルードガード利いてるし順番なんてどうでもいいだろ っていうか
だったら自作のヘッダが先に来るべきだろ って思うんだけど
976はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 873e-8/hI)
2021/12/14(火) 18:00:24.76ID:+JRF3Q+g0 >>975
たとえば assert.h を #include する前にマクロ NDEBUG が定義されていると assert が無効になるといったように
動作の切り替えをするマクロというものが存在する。
標準ではそういうマクロは下線で始まる名前になってることが多いから自分のコードの中の名前がたまたま衝突するということは
そうそうないんだけど、各処理系やライブラリに固有の切り替え用マクロが雑な短い名前だったら意図せず影響を与えるかもしれない。
単なる習慣としてもプロジェクト内のヘッダは後に書くのが定着しているね。
たとえば assert.h を #include する前にマクロ NDEBUG が定義されていると assert が無効になるといったように
動作の切り替えをするマクロというものが存在する。
標準ではそういうマクロは下線で始まる名前になってることが多いから自分のコードの中の名前がたまたま衝突するということは
そうそうないんだけど、各処理系やライブラリに固有の切り替え用マクロが雑な短い名前だったら意図せず影響を与えるかもしれない。
単なる習慣としてもプロジェクト内のヘッダは後に書くのが定着しているね。
977デフォルトの名無しさん (ワッチョイ a720-8/hI)
2021/12/14(火) 18:01:10.76ID:la3dHmwP0 ユーザー先だと、標準的な関数やdefineが定義済みになって不具合が出るかもしれないし
一般的な方から読み込んだほうがいいのでは?
一般的な方から読み込んだほうがいいのでは?
978デフォルトの名無しさん (ワッチョイ 87bb-8/hI)
2021/12/14(火) 18:42:48.59ID:nW+wkdEb0 なんか本の著者は自作モジュールを先にインクルードするって言ってたな
理由はそのほうがコンパイルエラーが早くなるかららしい
理由はそのほうがコンパイルエラーが早くなるかららしい
979デフォルトの名無しさん (ワッチョイ bfe7-4DaK)
2021/12/14(火) 19:01:07.43ID:LP8Fmqr90980デフォルトの名無しさん (ワッチョイ 6763-xLgN)
2021/12/14(火) 19:56:33.18ID:J7XSbp4E0 コンパイルエラーが無くなってもバグは残るからなあ
981デフォルトの名無しさん (ワッチョイ 872c-N/e5)
2021/12/14(火) 21:37:05.35ID:Il/nsfIC0982デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/14(火) 22:16:45.94ID:yrIaaVQv0 >>979
決断に水を差すことになるかもしれないけど、↓のベストアンサーでは自作ヘッダが先だよ。
https://stackoverflow.com/questions/2762568/c-c-include-header-file-order
決断に水を差すことになるかもしれないけど、↓のベストアンサーでは自作ヘッダが先だよ。
https://stackoverflow.com/questions/2762568/c-c-include-header-file-order
983デフォルトの名無しさん (ワッチョイ 7f0e-4DaK)
2021/12/14(火) 22:26:46.15ID:Eg2Dauqu0 くだらねえ
単に依存関係ってだけのことだろ
一概にどっちが先であるべきだなんて押しつけは糞食らえだ
単に依存関係ってだけのことだろ
一概にどっちが先であるべきだなんて押しつけは糞食らえだ
984デフォルトの名無しさん (ワッチョイ 6763-xLgN)
2021/12/14(火) 23:19:28.66ID:J7XSbp4E0 以前のサイトだと
標準ライブラリ
業務共通ライブラリ
個別ライブラリ
の順にインクルードしなさいと決められてた
標準ライブラリ
業務共通ライブラリ
個別ライブラリ
の順にインクルードしなさいと決められてた
985デフォルトの名無しさん (ワッチョイ bfe9-4iyA)
2021/12/15(水) 00:55:34.24ID:Nn1Wh5vx0 まぁ、これも他のスタイルと同じで、どっちがいいというよりは単純なルールで統一されていることが重要なものと思ってる。
986デフォルトの名無しさん (ワッチョイ 7f0e-4DaK)
2021/12/15(水) 05:27:05.50ID:XqRMbcSJ0 押しつけはやる気と引き換えだ
そのコストに見合う理があるべき
そのコストに見合う理があるべき
987はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 873e-8/hI)
2021/12/16(木) 11:05:28.00ID:78Qrz9F+0 ヘッダのインクルードは全て .c の側でやる (ヘッダ内でインクルードしない) という流儀もある。
既にほとんど滅びた流儀だろうし、現代的ではないと断っておくがこの考え方を取るのであれば
インクルードの順序は重要になる。
// foo.h
struct foo{};
// bar.h
// ここで foo.h や stdint.h をインクルードしない
void bar(foo, uint32_t);
// bar.c
#include <stdint.h>
#include "foo.h"
#include "bar.h"
void bar(foo x, uint32_t y) { printf("bar\n"); }
// main.c
#include <stdio.h>
#include <stdint.h>
#include "foo.h"
#include "bar.h"
int main(void) { struct foo x; bar(x); }
メインの側で適切な順序にしないといけないから抽象不足だが、
インクルードガードしてても読み込んでプリプロセスの手順を通すという処理は発生してしまうので
それすらも最低限であるのが好ましいなどの思惑があるのだと思う。
(いまどきのコンパイラではインクルードガードのパターンを検出して
二度目にはファイルを読むことすらしないものもあるらしい。)
まあリソースをケチるのが正義だった昔の話やね。
既にほとんど滅びた流儀だろうし、現代的ではないと断っておくがこの考え方を取るのであれば
インクルードの順序は重要になる。
// foo.h
struct foo{};
// bar.h
// ここで foo.h や stdint.h をインクルードしない
void bar(foo, uint32_t);
// bar.c
#include <stdint.h>
#include "foo.h"
#include "bar.h"
void bar(foo x, uint32_t y) { printf("bar\n"); }
// main.c
#include <stdio.h>
#include <stdint.h>
#include "foo.h"
#include "bar.h"
int main(void) { struct foo x; bar(x); }
メインの側で適切な順序にしないといけないから抽象不足だが、
インクルードガードしてても読み込んでプリプロセスの手順を通すという処理は発生してしまうので
それすらも最低限であるのが好ましいなどの思惑があるのだと思う。
(いまどきのコンパイラではインクルードガードのパターンを検出して
二度目にはファイルを読むことすらしないものもあるらしい。)
まあリソースをケチるのが正義だった昔の話やね。
988デフォルトの名無しさん (ワッチョイ 97c3-pn1I)
2021/12/18(土) 21:34:42.48ID:U4IWqRR10 test
989デフォルトの名無しさん (ワッチョイ 37bb-g56a)
2021/12/23(木) 19:14:59.61ID:Xd/JFvMa0 レジスタから「値を読みだす」というのは「値をコピーする」と同義ですか?
990デフォルトの名無しさん (ワッチョイ a34c-ch9D)
2021/12/24(金) 05:09:46.99ID:ZnDQBfvC0 なんか違和感ある言い方だな
「読む」とはCPUへの入力、「書き込む」がCPUからの出力で
たとえばメモリリードはメモリからの出力、メモリライトはメモリへの入力を意味する
「コピー」はそれで合ってる
「ムーブ」になる場合は必ずそう断るから
「読む」とはCPUへの入力、「書き込む」がCPUからの出力で
たとえばメモリリードはメモリからの出力、メモリライトはメモリへの入力を意味する
「コピー」はそれで合ってる
「ムーブ」になる場合は必ずそう断るから
991デフォルトの名無しさん (ワッチョイ c5bb-t0J7)
2021/12/24(金) 05:42:34.84ID:TL6ByUiE0 >>990
たとえば
int a = 1;
int b = a + 2;
この「a + 2」の「a」の部分はメモリリードしてるということですよね
このとき計算のためにCPUに値を入力(コピー)しているという理解で合ってますか?
たとえば
int a = 1;
int b = a + 2;
この「a + 2」の「a」の部分はメモリリードしてるということですよね
このとき計算のためにCPUに値を入力(コピー)しているという理解で合ってますか?
992デフォルトの名無しさん (ワッチョイ 17da-zE/T)
2021/12/24(金) 05:43:27.34ID:+etymfSa0 レジスタからの読み出しは読み出しという操作自体に副作用がある(レジスタに対する読み出しを検知してデバイスが何かを行う)場合があるので, 必ずしも同義とは言えない
993デフォルトの名無しさん (ワッチョイ a34c-ch9D)
2021/12/24(金) 05:58:42.33ID:ZnDQBfvC0 >>991
合ってる
合ってる
994デフォルトの名無しさん (ワッチョイ c5bb-t0J7)
2021/12/24(金) 06:05:01.87ID:TL6ByUiE0995デフォルトの名無しさん (ワッチョイ 8d01-SPNH)
2021/12/24(金) 06:43:15.91ID:M4a7QlIa0 >>991
>CPUに値を入力
レジスタはCPUなのかメモリなのか
int a = 1;
int b = a + 2;
これがアセンブラだと
mov ax,1
add ax,2
mov ptr[b], ax
メモリに書き込んでるのは3行目しかないが
>CPUに値を入力
レジスタはCPUなのかメモリなのか
int a = 1;
int b = a + 2;
これがアセンブラだと
mov ax,1
add ax,2
mov ptr[b], ax
メモリに書き込んでるのは3行目しかないが
996デフォルトの名無しさん (ワッチョイ c5bb-t0J7)
2021/12/25(土) 01:01:40.65ID:s/Gdf1X50 >>995
アセンブラよくわからないんですが
mov ax, 1 // axレジスタに1をコピー
add ax, 2 // axレジスタの値に2を加算
mov ptr[b], ax // axレジスタの値をptr[b]にコピー
でしょうか
ptr[b]っていうのはなんですか?
アセンブラよくわからないんですが
mov ax, 1 // axレジスタに1をコピー
add ax, 2 // axレジスタの値に2を加算
mov ptr[b], ax // axレジスタの値をptr[b]にコピー
でしょうか
ptr[b]っていうのはなんですか?
997デフォルトの名無しさん (ワッチョイ eb69-e50p)
2021/12/25(土) 01:29:37.77ID:M0D5aTvU0 最適化で変数aがレジスタに充てられてるんだな
最適化を抑制すれば
mov ax,1
mov ptr[a], ax
mov ax, ptr[a]
add ax,2
mov ptr[b], ax
とかになるんじゃね
最適化を抑制すれば
mov ax,1
mov ptr[a], ax
mov ax, ptr[a]
add ax,2
mov ptr[b], ax
とかになるんじゃね
998デフォルトの名無しさん (ワッチョイ 9db3-ass7)
2021/12/25(土) 11:51:05.24ID:9FGZD56t0 #include <stdio.h>
999デフォルトの名無しさん (ワッチョイ 9db3-ass7)
2021/12/25(土) 11:51:41.94ID:9FGZD56t0 int main(void)
{
printf("good-bye 157\n");
{
printf("good-bye 157\n");
1000デフォルトの名無しさん (ワッチョイ 9db3-ass7)
2021/12/25(土) 11:52:11.17ID:9FGZD56t0 }
/*このすれは終了しました*/
/*このすれは終了しました*/
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 180日 0時間 29分 20秒
新しいスレッドを立ててください。
life time: 180日 0時間 29分 20秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★4 [蚤の市★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★5 [七波羅探題★]
- 【速報】 米トランプ政権声明 「中国が台湾を奪おうとする、いかなる試みも阻止する」 中国「レッドラインだ」 ★2 [お断り★]
- 元プロ野球選手・堂上隼人(43)を20代女性2人へのわいせつ未遂容疑で8回目の逮捕…これまでの被害者は10代・20代の女性11人に [Anonymous★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 【高校野球】なぜ『7回制』は反対多数でも止まらないか… 高野連が「全員の命」守るために貫く伝統より改革の姿勢 [冬月記者★]
- 【悲報】ドコモ ひかりTVを値上げ [358382861]
- 【悲報】地銀や生保 長期金利急上昇で含み損が加速 [358382861]
- 【高市悲報】自衛隊「実は事前に現場海域で中国軍から空母での発着訓練をすると通告がありました」え…?😨😨 [931948549]
- 【速報】旧統一教会会長が辞任 [459590647]
- 【高市速報】中国「このままだと日本が先制攻撃してくる」 [583597859]
- AI「その画像AIだぞ」AIぼく「そうなんだ助かる」
