!extend:checked:vvvvv:1000:512
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/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
※前スレ
C言語なら俺に聞け 151
https://mevius.5ch.net/test/read.cgi/tech/1554171817/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 152
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウウー Sa4f-7DQ/)
2019/06/17(月) 18:27:10.41ID:3L1/L9kLa597デフォルトの名無しさん (ワッチョイ 3f79-k+pP)
2019/07/19(金) 01:28:45.01ID:QK1dwfXD0 ネタで言ってるのか本気で言ってるのか判断が付かない
598デフォルトの名無しさん (ワッチョイ 0f01-/VB7)
2019/07/19(金) 01:46:29.51ID:ZOnA3nWq0 ポインタ難しいって言われてるけどそんなに難しいか?
メモリイメージできれば理解できると思うけどな
メモリイメージできれば理解できると思うけどな
599デフォルトの名無しさん (ワッチョイ 3fc5-k+pP)
2019/07/19(金) 02:19:29.42ID:1jezjf9K0 俺はポインタは難しいことがわかってたから、一度にすべて理解しようとしなかった
数年使って徐々に理解した
それが正解だった
数年使って徐々に理解した
それが正解だった
600デフォルトの名無しさん (ワッチョイ 0f95-k+pP)
2019/07/19(金) 02:49:16.94ID:ApXEphk20 初期化してないポインタにアクセスするとどうなっちゃうの
とか危険そうなのは試してないからわからないが
ハードウェアのイメージがあれば難しさはあまりない
(命名規則で Xxx_p と書いておけば
とか危険そうなのは試してないからわからないが
ハードウェアのイメージがあれば難しさはあまりない
(命名規則で Xxx_p と書いておけば
601デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/19(金) 06:09:16.79ID:8762T9lH0 > (命名規則で Xxx_p と書いておけば
システムハンガリアンは大大大大大嫌い
システムハンガリアンは大大大大大嫌い
602デフォルトの名無しさん (ドコグロ MM5f-TsWF)
2019/07/19(金) 07:17:09.85ID:gH0zRzIgM603デフォルトの名無しさん (ワッチョイ 7f7c-jGuh)
2019/07/19(金) 09:10:50.31ID:EJb/7aTM0604デフォルトの名無しさん (アウアウウー Sad3-9T1T)
2019/07/19(金) 09:29:24.25ID:uab/wKdga >>580
マイコン用の小さいコードも作れるから。
昔のマイコンやPCはメモリが物凄く少ないのでその辺は重要。
少なくとも毎回でかいランタイムライブラリがくっついてしまうようではダメだ。
それと元々 UNIX の記述用に使ってた言語なので Linux 等の互換OSでも使われていて、そういうのが徐々に広まっていったので、それを通してCが流行った面もあると思う。
マイコン用の小さいコードも作れるから。
昔のマイコンやPCはメモリが物凄く少ないのでその辺は重要。
少なくとも毎回でかいランタイムライブラリがくっついてしまうようではダメだ。
それと元々 UNIX の記述用に使ってた言語なので Linux 等の互換OSでも使われていて、そういうのが徐々に広まっていったので、それを通してCが流行った面もあると思う。
605デフォルトの名無しさん (アウアウウー Sad3-9T1T)
2019/07/19(金) 09:39:17.61ID:uab/wKdga606デフォルトの名無しさん (ワッチョイ 3fc5-k+pP)
2019/07/19(金) 11:29:42.41ID:1jezjf9K0607デフォルトの名無しさん (ワッチョイ 7f63-jGuh)
2019/07/19(金) 11:43:44.67ID:nbu0jJrl0 プログラムはZ80からなので、当たり前のようにアセンブラから学習した
CPUの仕組みを学ぶのにちょうど良かった気がする
CPUの仕組みを学ぶのにちょうど良かった気がする
608デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/19(金) 12:47:23.54ID:8762T9lH0 Z80だとパイプラインとかあんまり憶えないよな
でRISCブームのとき苦労させられたと
でRISCブームのとき苦労させられたと
609デフォルトの名無しさん (アークセー Sxa3-7lXP)
2019/07/19(金) 13:03:51.18ID:hLCIQJ7mx まぁZ80全盛期にパイプラインしてたCPUなんて限られてたしな。
そういう汎用コンピータはほぼ高級言語使われてたし。
そういう汎用コンピータはほぼ高級言語使われてたし。
610デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/19(金) 13:07:02.40ID:8762T9lH0 6502とか
611デフォルトの名無しさん (ワッチョイ 7f7c-jGuh)
2019/07/19(金) 13:28:17.26ID:EJb/7aTM0612デフォルトの名無しさん (ワッチョイ 0f01-/VB7)
2019/07/19(金) 14:13:06.92ID:ZOnA3nWq0 ムカデ長老を見習え
613デフォルトの名無しさん (ワッチョイ 0f68-WZlQ)
2019/07/20(土) 21:04:06.20ID:lWqONft90 泣いてる顔文字→( ; ; )がforの無限ループにしか見えないのですが、職業病でしょうか?
614デフォルトの名無しさん (ワッチョイ 3f77-0ngu)
2019/07/20(土) 21:31:18.65ID:TRa6Slo50 8086のアセンブラはセグメントで挫折する・・・と言われてたけど
Z80やってたらすんなり理解できたな。
Z80やってたらすんなり理解できたな。
615デフォルトの名無しさん (ワッチョイ 8fa0-jGuh)
2019/07/21(日) 01:27:26.84ID:3tY7pLz50616デフォルトの名無しさん (ワッチョイ 8f8f-1UnR)
2019/07/21(日) 04:14:55.91ID:Nmc6oncn0 >>615
草、見えたことないわw
草、見えたことないわw
617デフォルトの名無しさん (ワッチョイ 3fad-lraP)
2019/07/21(日) 06:51:52.49ID:F3an1Rtm0618デフォルトの名無しさん (ワッチョイ 3f01-TsWF)
2019/07/21(日) 08:20:20.57ID:/atv33Bt0 >>608
わかりやすいけど面倒だよね
わかりやすいけど面倒だよね
619デフォルトの名無しさん (ワッチョイ 4f61-aZqd)
2019/07/21(日) 15:59:50.66ID:FmQzr+LX0620デフォルトの名無しさん (ワッチョイ cfc3-oOeU)
2019/07/21(日) 16:10:09.79ID:g8U8cyIO0 forの方が短くてすむじゃないか
621デフォルトの名無しさん (ワッチョイ 0f01-7lXP)
2019/07/21(日) 16:20:48.28ID:PhbbaTTy0622デフォルトの名無しさん (ワッチョイ 0f95-k+pP)
2019/07/21(日) 16:27:59.21ID:m/GaQUZU0 空白のcontinue節みたいなのに入る必要がないから
ちょっとwhileのほうが早いイメージ
ちょっとwhileのほうが早いイメージ
623デフォルトの名無しさん (ワッチョイ cfc3-oOeU)
2019/07/21(日) 16:43:59.35ID:g8U8cyIO0 >>622
インタープリターじゃないんだからさ
インタープリターじゃないんだからさ
624デフォルトの名無しさん (ワッチョイ 3f01-TsWF)
2019/07/21(日) 16:52:32.65ID:/atv33Bt0625デフォルトの名無しさん (ワッチョイ 0f48-jGuh)
2019/07/21(日) 18:08:15.14ID:Q0wcPMRB0 for (;;) とwhile (1) がどっちがぱっと見分かりやすいか戦争勃発しますか?
あとfor派は;;周りにスペースを入れるか入れないかでさらに細かく派閥が分かれていると聞きました!
あとfor派は;;周りにスペースを入れるか入れないかでさらに細かく派閥が分かれていると聞きました!
626デフォルトの名無しさん (ワッチョイ 4f61-aZqd)
2019/07/21(日) 18:19:58.86ID:FmQzr+LX0 >>625
まさに永久ループ戦争!
まさに永久ループ戦争!
627デフォルトの名無しさん (ワッチョイ ff2f-Im00)
2019/07/21(日) 18:30:02.78ID:+S54SSox0 字下げのいらないgotoも参戦
628デフォルトの名無しさん (ワッチョイ 0f48-jGuh)
2019/07/21(日) 18:32:50.79ID:Q0wcPMRB0 あ、do {} while(1);派も出てくるとおもうので皆さん頑張ってください応援してます
629デフォルトの名無しさん (ワッチョイ cfc3-oOeU)
2019/07/21(日) 18:38:59.23ID:g8U8cyIO0 do while(0)は便利
>>629
それは #define で使うときだけでしょう?
それは #define で使うときだけでしょう?
631デフォルトの名無しさん (ワッチョイ cfc3-oOeU)
2019/07/21(日) 18:44:37.26ID:g8U8cyIO0 いや、エラー判定とかでもよく使うだろ?
632デフォルトの名無しさん (アークセー Sxa3-F8Mm)
2019/07/21(日) 18:48:06.96ID:I0JRxlnTx for (;;) は forever と読むとか
633デフォルトの名無しさん (ワッチョイ 3f01-TsWF)
2019/07/21(日) 18:50:32.60ID:/atv33Bt0 バッドノウハウに近いが
do {
if(...) break;
…
if(…) break;
…
} while(0);
みたいなのは昔書いてたわ
do {
if(...) break;
…
if(…) break;
…
} while(0);
みたいなのは昔書いてたわ
634デフォルトの名無しさん (ワッチョイ 0f48-jGuh)
2019/07/21(日) 18:52:10.72ID:Q0wcPMRB0 do {} while (0); の意味と目的【do while false イディオムの利点】 | MaryCore
ttps://marycore.jp/coding/do-while-false-idiom/
ttps://marycore.jp/coding/do-while-false-idiom/
635デフォルトの名無しさん (ワッチョイ 4f61-aZqd)
2019/07/21(日) 18:58:23.23ID:FmQzr+LX0 flag=true;
while(flag)
{
flag=(....);
}
while(flag)
{
flag=(....);
}
636デフォルトの名無しさん (ワッチョイ 3f01-TsWF)
2019/07/21(日) 19:09:32.73ID:/atv33Bt0 >>634
do {
if (that(value)) break;
if (value == -1) break;
if (value == 0) break;
puts("有効な値です");
} while (0);
みたいなのは
do {
if (
that(value)
|| value == -1
|| value == 0
) break;
puts("有効な値です");
} while (0);
って書けばいいだけ
do {
if (that(value)) break;
value = f(…);
if (value == -1) break;
value = g(…);
if (value == 0) break;
puts("有効な値です");
} while (0);
みたいに間に処理をはさまる場合が難しい
do {
if (that(value)) break;
if (value == -1) break;
if (value == 0) break;
puts("有効な値です");
} while (0);
みたいなのは
do {
if (
that(value)
|| value == -1
|| value == 0
) break;
puts("有効な値です");
} while (0);
って書けばいいだけ
do {
if (that(value)) break;
value = f(…);
if (value == -1) break;
value = g(…);
if (value == 0) break;
puts("有効な値です");
} while (0);
みたいに間に処理をはさまる場合が難しい
637デフォルトの名無しさん (ワッチョイ 0f48-jGuh)
2019/07/21(日) 19:18:11.94ID:Q0wcPMRB0 このスレって直接ここに複数行のソース書き始める人多いよね
638デフォルトの名無しさん (ワッチョイ 0f95-k+pP)
2019/07/21(日) 19:37:52.68ID:m/GaQUZU0 >>633
小さなスコープを作るため?
小さなスコープを作るため?
639デフォルトの名無しさん (ワッチョイ cfc3-oOeU)
2019/07/21(日) 19:39:13.75ID:g8U8cyIO0 breakが使えるスコープね
640デフォルトの名無しさん (ワッチョイ 0f68-WZlQ)
2019/07/21(日) 20:14:20.69ID:/SITzbMm0 #define fe for( ; ; )
が最強
が最強
641デフォルトの名無しさん (ワッチョイ ff2f-Im00)
2019/07/21(日) 20:35:26.43ID:+S54SSox0 >633
おかしな事してるのが一目で、continue が外に漏れるこれ オススメ
switch(0)default:{
おかしな事してるのが一目で、continue が外に漏れるこれ オススメ
switch(0)default:{
642デフォルトの名無しさん (スッップ Sd5f-1UnR)
2019/07/21(日) 20:45:42.22ID:R+Rb+3j1d gotoが便利すぎて禁止されがちなのが悪い。ちゃんと使えばコードが見やすくなることこの上なしなのに。
643デフォルトの名無しさん (ワッチョイ 3f01-TsWF)
2019/07/21(日) 21:09:22.26ID:/atv33Bt0644デフォルトの名無しさん (ワッチョイ 0f95-k+pP)
2019/07/21(日) 21:21:29.94ID:m/GaQUZU0 ないものねだりではありますが
perlのようにブロックやループの頭にラベルをつけて、
redo next last があったらもっと良い
do {...} while(0); も {} と簡潔
perlのようにブロックやループの頭にラベルをつけて、
redo next last があったらもっと良い
do {...} while(0); も {} と簡潔
645デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/21(日) 21:42:59.10ID:ZJZWYLqf0646デフォルトの名無しさん (ワッチョイ 0fab-Pjse)
2019/07/21(日) 21:46:07.68ID:AbjqA2h30 >>621
インデックスのことかも
インデックスのことかも
647デフォルトの名無しさん (ワッチョイ 3f28-t2IU)
2019/07/21(日) 22:36:03.44ID:c+HlyquL0 >グローバル領域に予め必要な変数や配列確保しておけば
>ネタで言ってるのか本気で言ってるのか判断が付かない
実際に仕様なんかがしっかりしているタイプで
メモリー確保が動的に大きく変化しないものなら
実際にそういう風に作っているのを聞いた事は有る
配列式だと動的に確保したり開放したりが無く
リークしたり無効になったりしない分かなり安全
実行開始時に使用する領域が完全に確保されているから
>ネタで言ってるのか本気で言ってるのか判断が付かない
実際に仕様なんかがしっかりしているタイプで
メモリー確保が動的に大きく変化しないものなら
実際にそういう風に作っているのを聞いた事は有る
配列式だと動的に確保したり開放したりが無く
リークしたり無効になったりしない分かなり安全
実行開始時に使用する領域が完全に確保されているから
648デフォルトの名無しさん (スッップ Sd5f-1UnR)
2019/07/21(日) 23:24:53.03ID:R+Rb+3j1d >>645
すまん、そんなに深い意味はない。
すまん、そんなに深い意味はない。
649デフォルトの名無しさん (アウアウエー Sabf-eWIt)
2019/07/22(月) 00:04:19.79ID:PN8KKKdJa 静的な所にプール作るのはメモリ制限ある組込では割とあったと思いますよ
650デフォルトの名無しさん (アウアウウー Sad3-9T1T)
2019/07/22(月) 15:35:08.24ID:vmYUDJ0Ja651デフォルトの名無しさん (アウアウウー Sad3-9T1T)
2019/07/22(月) 15:37:04.86ID:vmYUDJ0Ja あ、Perlもループにラベル付けてlastで抜けるなんてのあるな。
652デフォルトの名無しさん (ワッチョイ 7f63-jGuh)
2019/07/22(月) 16:18:33.80ID:QnLUYAOH0 break ラベル で、多重ループから一気に抜けられると便利なんだがな
653デフォルトの名無しさん (ワッチョイ 0f95-k+pP)
2019/07/22(月) 16:35:14.27ID:rxI3cfFL0 gotoが便利すぎというより
単純な break returnで間にあわないときには
それしか制御がないのでは
単純な break returnで間にあわないときには
それしか制御がないのでは
654デフォルトの名無しさん (ワッチョイ 3fc5-k+pP)
2019/07/22(月) 17:24:33.59ID:7pc0Xm6O0 二重ループから抜けるにはgotoが一番
gotoを廃止した言語制作者は天罰を受けるべき
gotoを廃止した言語制作者は天罰を受けるべき
655デフォルトの名無しさん (ワッチョイ 0f95-k+pP)
2019/07/22(月) 17:30:50.79ID:rxI3cfFL0 goto はそれで使われている保障がないから、
保守性のためにも
ループなどに名前付けて、それを抜けると明記したい
保守性のためにも
ループなどに名前付けて、それを抜けると明記したい
656デフォルトの名無しさん (アウアウカー Sac3-eWIt)
2019/07/22(月) 17:54:19.31ID:e8FkVPqsa まず多重ループを避けろと
657デフォルトの名無しさん (ワッチョイ 3fab-5Xl5)
2019/07/22(月) 18:05:34.66ID:LktYqlpm0 gccで X Window System (x11) でウインドウつくって画像合成するのって
どうすればできますか? なにかサンプルプログラムなど無いでしょうか?
どうすればできますか? なにかサンプルプログラムなど無いでしょうか?
658デフォルトの名無しさん (ワッチョイ 7f63-jGuh)
2019/07/22(月) 18:22:30.58ID:QnLUYAOH0659蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd5f-7Trs)
2019/07/22(月) 18:36:31.65ID:zh10SCAHd660蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd5f-7Trs)
2019/07/22(月) 18:39:10.09ID:zh10SCAHd いにしえのシステムなら、関数名をmanコマンドで引けば、X Windowの関数のマニュアルが見られるはず。
661デフォルトの名無しさん (ワッチョイ 3fab-5Xl5)
2019/07/22(月) 18:42:21.76ID:LktYqlpm0662デフォルトの名無しさん (ワッチョイ 7f63-jGuh)
2019/07/22(月) 18:50:51.45ID:QnLUYAOH0 質問者自身で決定すれば良いと思うが
663蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd5f-7Trs)
2019/07/22(月) 18:54:21.58ID:zh10SCAHd >>661
X11は将来、Waylandにバトンを渡すらしい。新しい端末ではX11が採用されない状況が考えられる。クロスプラットフォームの方が安心かな?
X11は将来、Waylandにバトンを渡すらしい。新しい端末ではX11が採用されない状況が考えられる。クロスプラットフォームの方が安心かな?
664蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd5f-7Trs)
2019/07/22(月) 18:56:55.15ID:zh10SCAHd 暗号化されてないX11をネットワークで見たら丸裸だからあんまり使いたくないよね。
665デフォルトの名無しさん (ワッチョイ 3fab-5Xl5)
2019/07/22(月) 19:02:32.68ID:LktYqlpm0 ネットワーク環境はsshしか使ったこと無いのですが
SDL_net などは関数に暗号化などがふくまれているのですか?
SDL_net などは関数に暗号化などがふくまれているのですか?
666蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd5f-7Trs)
2019/07/22(月) 19:08:12.59ID:zh10SCAHd >>665
ソーシャルゲームを作るなら、暗号化は必須。暗号化方式を決めて、それに合った暗号化専用のライブラリーを使う形になる。
ソーシャルゲームを作るなら、暗号化は必須。暗号化方式を決めて、それに合った暗号化専用のライブラリーを使う形になる。
667デフォルトの名無しさん (ワッチョイ 3fab-5Xl5)
2019/07/22(月) 19:10:57.83ID:LktYqlpm0 >>666
C言語の暗号化ライブラリで使いやすいのおせーてください
C言語の暗号化ライブラリで使いやすいのおせーてください
668蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd5f-7Trs)
2019/07/22(月) 19:22:24.63ID:zh10SCAHd669デフォルトの名無しさん (アウアウカー Sac3-eWIt)
2019/07/22(月) 19:25:19.41ID:MRg17CtQa いろいろあるんですけど、ライセンス的にopensslでいいやみたいな感じになりましたね
waylandは5年後くらいにはなんとかなるんかな。どういうレイヤでサービス提供したいのかよくわからん所がある。
waylandは5年後くらいにはなんとかなるんかな。どういうレイヤでサービス提供したいのかよくわからん所がある。
670デフォルトの名無しさん (ワッチョイ 8f8f-1UnR)
2019/07/22(月) 21:33:35.10ID:tAjmkx+m0 同じくopensslでいいんじゃないかと思いますな
671デフォルトの名無しさん (ワッチョイ 4f25-WSqd)
2019/07/23(火) 03:25:09.81ID:/ZO3BTO70 gchar **command = (gchar *[]){"./Hello.exe","World",NULL};
を gcc6 で compile すると以下の2種類の warning が出ます。
warning: ISO c++11 does not allow conversion from string literal to 'gchar *' (aka 'char *') [-Wwritable-strings]
warning: pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression [-Waddress-of-array-temporary]
どう書くのが正解なのでしょうか? 教えてください。最後の NULL がなければ、
gchar **command = (gchar **)((char [][20]){"./Hello.exe","World"});
で良いと思うのですが、最後の NULL も必要です。よろしくお願いします。
を gcc6 で compile すると以下の2種類の warning が出ます。
warning: ISO c++11 does not allow conversion from string literal to 'gchar *' (aka 'char *') [-Wwritable-strings]
warning: pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression [-Waddress-of-array-temporary]
どう書くのが正解なのでしょうか? 教えてください。最後の NULL がなければ、
gchar **command = (gchar **)((char [][20]){"./Hello.exe","World"});
で良いと思うのですが、最後の NULL も必要です。よろしくお願いします。
672デフォルトの名無しさん (アウアウエー Sabf-eWIt)
2019/07/23(火) 04:01:15.67ID:XJs/DfWFa 要素の文字列をそれぞれキャストしてみるとか?
でも別に文字列の実体を用意した方が無難では。
でも別に文字列の実体を用意した方が無難では。
673デフォルトの名無しさん (ワッチョイ ff2f-Im00)
2019/07/23(火) 05:54:57.80ID:XS6t8zxL0 char * const command[3] = {"./Hello.exe","World"};
674デフォルトの名無しさん (オッペケ Sra3-KwlG)
2019/07/23(火) 09:58:47.20ID:J+ZHGa1Mr 初心者で勉強中なんですが、
switch文は
if文みたく
switch(a >0)のように()の中に関係演算子を使った式はかけないんでしょうか?
エラーがでるので無理なのかなと思ったんですが
switch文は
if文みたく
switch(a >0)のように()の中に関係演算子を使った式はかけないんでしょうか?
エラーがでるので無理なのかなと思ったんですが
675デフォルトの名無しさん (ブーイモ MM0f-lP7j)
2019/07/23(火) 10:46:29.88ID:DdnFitx+M エラーじゃなくて警告では?
動かない理由はないと思うのでgccで試してみたけど、ちゃんと動いたよ。
ただ、結果は1か0の2値しかないのでif文使ったほうが良いと思うよ
動かない理由はないと思うのでgccで試してみたけど、ちゃんと動いたよ。
ただ、結果は1か0の2値しかないのでif文使ったほうが良いと思うよ
676デフォルトの名無しさん (アークセー Sxa3-7lXP)
2019/07/23(火) 10:51:17.50ID:unlUKZmGx 本当は
switch (a) {
case a > 0:
...
的なことをしたかったのではないかとエスパーしてみる。
switch (a) {
case a > 0:
...
的なことをしたかったのではないかとエスパーしてみる。
677デフォルトの名無しさん (ワッチョイ 4f61-aZqd)
2019/07/23(火) 11:36:41.71ID:LSxEgoA20678デフォルトの名無しさん (ワッチョイ 7f7c-jGuh)
2019/07/23(火) 11:42:11.95ID:CU39ntZ20 >>676
switch(true) って裏技 あれマジで気色悪いよね
switch(true) って裏技 あれマジで気色悪いよね
679デフォルトの名無しさん (ブーイモ MMb3-sRGG)
2019/07/23(火) 11:44:08.90ID:SF2VCGvmM case に何を書けばいいんだ?false は 0 でいいだろうけど、true は?
680671 (ワッチョイ 4f25-WSqd)
2019/07/23(火) 11:49:30.09ID:/ZO3BTO70 >>673
>char * const command[3] = {"./Hello.exe","World"};
ありがとうございます。これでも1つめの warning "does not allow conv..." は出ました。皆さんの所では出ませんか?
それと、 command はどうしても char ** 型である必要があります。
仮想端末で何かを実行させる関数 vte_terminal_spawn_async() に与えるためです。
https://developer.gnome.org/vte/unstable/VteTerminal.html#vte-terminal-spawn-async
引き続きアドバイスをお願いします。
>char * const command[3] = {"./Hello.exe","World"};
ありがとうございます。これでも1つめの warning "does not allow conv..." は出ました。皆さんの所では出ませんか?
それと、 command はどうしても char ** 型である必要があります。
仮想端末で何かを実行させる関数 vte_terminal_spawn_async() に与えるためです。
https://developer.gnome.org/vte/unstable/VteTerminal.html#vte-terminal-spawn-async
引き続きアドバイスをお願いします。
681デフォルトの名無しさん (ワッチョイ 0ff6-0ngu)
2019/07/23(火) 11:53:01.06ID:4sm3RNn+0 >>674
書くことはできる
関係式は int 型の 0 または 1 という結果を生じるので
switch (a > 0) は a の値により
switch (0) もしくは
switch (1) と等価になる
おまえさんが言いたいのは switch で範囲チェックができるのか
ということだろうがそれはできない
a と case に指定した定数の == 比較しかできないのが switch だ
不等号や != が使いたければ if 文か3項演算子ということになる
書くことはできる
関係式は int 型の 0 または 1 という結果を生じるので
switch (a > 0) は a の値により
switch (0) もしくは
switch (1) と等価になる
おまえさんが言いたいのは switch で範囲チェックができるのか
ということだろうがそれはできない
a と case に指定した定数の == 比較しかできないのが switch だ
不等号や != が使いたければ if 文か3項演算子ということになる
682671 (ワッチョイ 4f25-WSqd)
2019/07/23(火) 12:04:01.45ID:/ZO3BTO70 >>672
ありがとうございます。具体的にはどうしたら良いでしょうか?
char list[2][20] = {"./Hello.exe","World"};
gchar **command = (gchar **){ (char *)list[0], (char *)list[1], NULL};
だと、↓のエラーになります。
error: function-style cast to a builtin type can only take one argument
正しいやり方をお願いします。
うーむ。どうしたものか。 gchar ** 型をどうやって作るのかさっぱり分からない。。。
ダブルポインタがよく分かってない。もう warning は放っておくしかないのかな?
ありがとうございます。具体的にはどうしたら良いでしょうか?
char list[2][20] = {"./Hello.exe","World"};
gchar **command = (gchar **){ (char *)list[0], (char *)list[1], NULL};
だと、↓のエラーになります。
error: function-style cast to a builtin type can only take one argument
正しいやり方をお願いします。
うーむ。どうしたものか。 gchar ** 型をどうやって作るのかさっぱり分からない。。。
ダブルポインタがよく分かってない。もう warning は放っておくしかないのかな?
683デフォルトの名無しさん (アウアウエー Sabf-eWIt)
2019/07/23(火) 12:10:49.21ID:XJs/DfWFa その前に、671の警告でC++11って出てるのはなぜなのか。
複合リテラルってあれキャストではないよな。知らんけど。
複合リテラルってあれキャストではないよな。知らんけど。
684671 (ワッチョイ 4f25-WSqd)
2019/07/23(火) 12:21:12.41ID:/ZO3BTO70 >>672
gchar list1[][20] = {"../Exe/H2O.exe","World"};
gchar *list2[] = {(gchar *)list1[0], (gchar *)list1[1], NULL};
gchar **command = (gchar **)list2;
いろいろ試したところ、↑だと warning でなくなりました。意図されたのはコレでしょうか?コレで良いでしょうか?
gchar list1[][20] = {"../Exe/H2O.exe","World"};
gchar *list2[] = {(gchar *)list1[0], (gchar *)list1[1], NULL};
gchar **command = (gchar **)list2;
いろいろ試したところ、↑だと warning でなくなりました。意図されたのはコレでしょうか?コレで良いでしょうか?
685デフォルトの名無しさん (ワッチョイ 3fc5-k+pP)
2019/07/23(火) 12:21:15.34ID:d2s+lfJ+0686デフォルトの名無しさん (ワッチョイ 8f1a-aZqd)
2019/07/23(火) 12:22:08.73ID:7yf4dx7Q0 >>680
文字列リテラルは書き換え不可なので当然の警告。
char const* const command[] なら警告は出ないだろうけど、渡した先で書き換えしない保証がないならアウト。
渡した先で書き換えしない保証がないなら、リテラルでの初期化は無理だと思う。
文字列リテラルは書き換え不可なので当然の警告。
char const* const command[] なら警告は出ないだろうけど、渡した先で書き換えしない保証がないならアウト。
渡した先で書き換えしない保証がないなら、リテラルでの初期化は無理だと思う。
687671 (ワッチョイ 4f25-WSqd)
2019/07/23(火) 12:24:46.80ID:/ZO3BTO70688デフォルトの名無しさん (ワッチョイ 3fc5-k+pP)
2019/07/23(火) 12:30:44.31ID:d2s+lfJ+0689デフォルトの名無しさん (ワッチョイ 3fc5-k+pP)
2019/07/23(火) 12:33:40.67ID:d2s+lfJ+0 > warning: ISO c++11 does not allow conversion from string literal to 'gchar *' (aka 'char *') [-Wwritable-strings]
charのエイリアスか
なら最初に書いとけよ
charのエイリアスか
なら最初に書いとけよ
690デフォルトの名無しさん (アウアウエー Sabf-eWIt)
2019/07/23(火) 12:38:30.05ID:XJs/DfWFa >>684
そういう話です。
そういう話です。
691671 (ワッチョイ 4f25-WSqd)
2019/07/23(火) 13:18:08.85ID:/ZO3BTO70692671 (ワッチョイ 4f25-WSqd)
2019/07/23(火) 13:24:51.89ID:/ZO3BTO70 >>683
Makefile には gcc6 と書いてあるのですが、出力をみると c++ でコンパイルしていました。。。
今気づきました。 -std=c++11 もつけてある。
Cのソースを c++ でコンパイルするとマズいですか?今のところ何も問題はないです。
Makefile には gcc6 と書いてあるのですが、出力をみると c++ でコンパイルしていました。。。
今気づきました。 -std=c++11 もつけてある。
Cのソースを c++ でコンパイルするとマズいですか?今のところ何も問題はないです。
693デフォルトの名無しさん (アウアウエー Sabf-eWIt)
2019/07/23(火) 14:56:41.16ID:XJs/DfWFa >>692
C++に複合リテラルないんじゃないかな。なくても困らんか。
あとさっきの配列の要素にstrdup突っ込むとconstにしなくていいかもな。
もしくはmemcpy(malloc(100),"hoge",5)とか。
標準に沿った書き方かどうかは知らん。
C++に複合リテラルないんじゃないかな。なくても困らんか。
あとさっきの配列の要素にstrdup突っ込むとconstにしなくていいかもな。
もしくはmemcpy(malloc(100),"hoge",5)とか。
標準に沿った書き方かどうかは知らん。
694671 (アウアウカー Sac3-WSqd)
2019/07/23(火) 17:13:31.67ID:TCk4qRZWa >>693
ありがとうございます。なるほど、複合リテラルですね。調べてみます。
自分、C で書いていて compile も C でやっているつもりだったんですが、コンパイラが c++ だった。。。
これは c++ 用の Makefile を流用した為です。
最初 c++ でアプリを作ろうとして、Makefile を用意して、ソースを書き始めたのですが、途中で仮想端末オブジェクトが c++ ではうまく使えない事が判明して、
ソースを C に書き変えたのです。Makefile はフラグ等あるので流用してしまった...
これ以上は困らないですかね。困った時にはコンパイラが c++ な為を疑ってみます。
strdup と memcpy も試してみます
これをヒントに検索していて g_strsplit なる関数もある事を発見しました。
ありがとうございます。なるほど、複合リテラルですね。調べてみます。
自分、C で書いていて compile も C でやっているつもりだったんですが、コンパイラが c++ だった。。。
これは c++ 用の Makefile を流用した為です。
最初 c++ でアプリを作ろうとして、Makefile を用意して、ソースを書き始めたのですが、途中で仮想端末オブジェクトが c++ ではうまく使えない事が判明して、
ソースを C に書き変えたのです。Makefile はフラグ等あるので流用してしまった...
これ以上は困らないですかね。困った時にはコンパイラが c++ な為を疑ってみます。
strdup と memcpy も試してみます
これをヒントに検索していて g_strsplit なる関数もある事を発見しました。
695デフォルトの名無しさん (アウアウウー Sad3-9T1T)
2019/07/23(火) 18:36:28.60ID:5chEKyGia C++ には引数に void だけって関数がないらしいぞ。
その他細かい違いがあるかも知れないので要注意だ。
その他細かい違いがあるかも知れないので要注意だ。
696デフォルトの名無しさん (ワッチョイ cfc3-oOeU)
2019/07/23(火) 18:58:12.02ID:Ffr5F2PG0 どちらかというと()の解釈が違う
c++だと()は(void)と同じ
cは()が(void)と同じになる文脈とそうでない文脈がある
c++だと()は(void)と同じ
cは()が(void)と同じになる文脈とそうでない文脈がある
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★10 [ぐれ★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 ★2 [おっさん友の会★]
- 【独占スクープ】元TOKIOの松岡昌宏がSTARTO社を“退所”へ「国分のコンプライアンス違反」問題をきっかけに決断、12月から単独で活動 [Ailuropoda melanoleuca★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【悲報】日本、パンダ0にwwwwwwwwwwww高市さんありがとう🐼 [271912485]
- 中国報道、高市首相を「毒苗」と中傷😡 [399259198]
- 【高市悲報】🇨🇳中国「日本への報復措置? 他にいくらでも方法はある。 まだまだやめないよ」 😨😱 [485983549]
- 高市早苗、約1ヶ月でドル円・10円円安を達成 [256556981]
- 中国専門家の興梠一郎先生「実は中国が一番焦ってるのが総領事の暴言だ。中国は今かなり追い詰められている」 [904151406]
- (´・ω・`)おはよ
