!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/L9kLa591デフォルトの名無しさん (ワッチョイ 3fa5-xTH7)
2019/07/19(金) 00:25:42.16ID:Mih8lrFJ0 もう一つが奥の深さでC言語ではポインタが奥の深い箇所にあたる
この難易度が絶妙で難しい難しいと言われていて初学者には適度に難しいので挫折者が増える、
挫折者の総量が言語の価値を決定する
教育用に作られた言語は難しい箇所とか理屈に合わない箇所とか奥の深い箇所とかが無いのでオカルトとしての魅力が無い
学習曲線がいびつじゃないと流行しない
この難易度が絶妙で難しい難しいと言われていて初学者には適度に難しいので挫折者が増える、
挫折者の総量が言語の価値を決定する
教育用に作られた言語は難しい箇所とか理屈に合わない箇所とか奥の深い箇所とかが無いのでオカルトとしての魅力が無い
学習曲線がいびつじゃないと流行しない
592デフォルトの名無しさん (ワッチョイ 3f79-k+pP)
2019/07/19(金) 00:30:44.87ID:QK1dwfXD0 ポインタはただの入り口だろ
Cは入り口で躓く奴が多いだけで奥は寧ろ浅い
Cは入り口で躓く奴が多いだけで奥は寧ろ浅い
593デフォルトの名無しさん (ワッチョイ 7f63-jGuh)
2019/07/19(金) 00:36:04.81ID:nbu0jJrl0 ポインタ使わないでもC言語ってプログラム書けるんだよな
無理して難しいことをしなくても良いと思う
ちゃんと動くかどうかの方が重要
無理して難しいことをしなくても良いと思う
ちゃんと動くかどうかの方が重要
594デフォルトの名無しさん (ワッチョイ 3f79-k+pP)
2019/07/19(金) 00:38:14.85ID:QK1dwfXD0 ポインタを使わないならCを使わない方がいい
595デフォルトの名無しさん (ワッチョイ 8f8f-1UnR)
2019/07/19(金) 01:10:46.83ID:0vO2r76S0 超無理矢理ならポインタ使わずになんでもできるんかな?
いずれにせよポインタ理解してないとライブラリ使えなくて詰むでしょ。たぶん突然落ちたりメモリリークだらけのプログラムができあがるはず。
いずれにせよポインタ理解してないとライブラリ使えなくて詰むでしょ。たぶん突然落ちたりメモリリークだらけのプログラムができあがるはず。
596デフォルトの名無しさん (ワッチョイ 7f63-jGuh)
2019/07/19(金) 01:25:31.41ID:nbu0jJrl0 グローバル領域に予め必要な変数や配列確保しておけば
メモリーリークが発生する余地はないw
メモリーリークが発生する余地はないw
597デフォルトの名無しさん (ワッチョイ 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
そういう話です。
そういう話です。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 立民・岡田氏の質疑「不適切」 維新・藤田氏、台湾有事答弁巡り [蚤の市★]
- 【悲報】日本、自民党(統一教会)で完全崩壊か?年金制度実質破綻、生活保護、国民健康保険廃止へ [383063292]
- ㊗157円 [194819832]
- なんでIDがHAPPYなの?
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- 高市早苗って「わざと」日本畳んでるよな? [419865925]
- ‎
