- 1 名前:デフォルトの名無しさん [2008/04/29(火) 09:44:57 ]
- 言語の入門者向け解説スレです。
・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 26 pc11.2ch.net/test/read.cgi/tech/1206196600/ 過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000 教えて欲しいのではなく丸投げしたいならこちらへ C/C++の宿題を片付けます 105代目 pc11.2ch.net/test/read.cgi/tech/1208268461/
- 232 名前:229 mailto:sage [2008/05/03(土) 18:44:18 ]
- >>231
あ、すいません。 #include <stdio.h> int main(void) { printf("好きなことを書きましょう"); } で、うまく実行できたという意味です。
- 233 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:44:52 ]
- 素早い返答感謝です。
実行すると、内部ファイル云々、操作可能なプログラムと 認識されていません、と出ました。 内定先から頂いたDISCの指示に従ってインストールしたんですが・・・・
- 234 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:46:24 ]
- 何の話か知らないが内定先に聞けよ
- 235 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:46:26 ]
- >>232
ttp://www.kijineko.co.jp/tech/superstitions/void-main.html
- 236 名前:229 mailto:sage [2008/05/03(土) 18:50:11 ]
- >>235
難しすぎてわからないのですが… ようは、void main() と int main(void) は同じような意味だから できたほうを使えってことですか?
- 237 名前:デフォルトの名無しさん [2008/05/03(土) 18:53:32 ]
- C++とCで仕様がちがうのでは?
- 238 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:55:36 ]
- >>236
戻りはint。引数は依存って書いてあるな。void main(void)は不可か
- 239 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:58:44 ]
- >>236
全部 int main でおk
- 240 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:01:50 ]
- >>229
そのサイトが嘘つき、もしくは正しい知識をもってない。 大学のほうが正解。
- 241 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:05:22 ]
- あとint mainでやるなら
正常終了したって事を示す「return 0;」を忘れずに
- 242 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:08:20 ]
- C99 なら大丈夫だけどね。
まだ C89 の環境多いから return 0; 書いた方がいいけど。
- 243 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:13:18 ]
- >>232 みたいなちょっと「動作確認しました」くらいのやつならC89でもreturn 省略してもいいよ。
逆に、いちいちつっこむヤツを見ると、省略できるの知らないの? って思う。
- 244 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:15:48 ]
- 質問します。
Linuxのコンソールで擬似和音のビープ音鳴らすのにエスケープシーケンスを 使おうとおもってるんですが、printf関数でエスケープシーケンスを 出力すると、一旦出力バッファに貯められてしまうため、時間差で 音を出したくても上手く音が出力されません。 出力バッファを介さずに文字列を出力する関数ってなにかありますでしょうか?
- 245 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:31:43 ]
- >>243
return を省略した際の動作は規格上は未定義。 C99 や C++ だと main 関数は特例として省略が可能だが、 C89 では main 関数にもそれが適用される。 大体の処理系は警告出すだけだがね。
- 246 名前:230 mailto:sage [2008/05/03(土) 20:03:24 ]
- 妙な事をきいてしまってすみません。内定先もGW中で
担当の方がいらっしゃらない物で。 失礼しました。
- 247 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:10:18 ]
- >>245
動作が未定義ってかリターン値が未定義だろ。 省略しても問題ないよ。 お作法的には書くほうがいいけど、書き捨てのコードにいちいちツッコミ入れるほどじゃないよ。
- 248 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:17:00 ]
- >>244
Drawin / *bsd 系なので Linux はどうかしらないが fflush 使うか raw モードにするというのももある // うまく管理して { int fd; struct sgttyb bk, fm; } { if((fd = open("/dev/tty", O_RDWR)) == -1) return -1; ioctl(fd, TIOCGETP, &bk); fm = bk; if(fm.sg_flags != RAW) { fm.sg_flags = RAW; ioctl(fd, TIOCSETP, &fm); } read(fd write(fd でどちらもバッファリング無しで入出力...
- 249 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:22:02 ]
- >>236
int main() { .... ; return 0; } ですればどうでしょうね。 return 無しの例外が許されてるといいながら return 0; 記述がそれほど手間でもないのでは? void main() の登場はいわゆる void 型が導入された次期からしばらくの間ではなかったか。サンプルが古いのであって目くじら立てずに見過ごせばどうかな?。
- 250 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:25:31 ]
- めくじらっつーか、gcc じゃコンパイル通らんし。
- 251 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:37:49 ]
- >>250
だから int main に読み替えればいいでしょって事なの。参考にしてる物に目くじら立てて(その例文は可笑しい)って作者に文句のメールでも送る?。そんな方向に行くのはどうかという事。
- 252 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:38:49 ]
- >>251
仮にも 「講座」 を名乗るのにそれじゃマズいだろ。
- 253 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:41:52 ]
- 問題はおかしいかおかしくないか判断できない初心者がそれを読むってことだろ
- 254 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:58:37 ]
- そうガミガミすんなや、GWも後半に入ったというのに
# 自分はどこにも行きませんけど
- 255 名前:229 mailto:sage [2008/05/03(土) 20:59:37 ]
- いろいろな回答ありがとうございます
大学で3回くらいしかまだ習ってないので(習ったのはprintf int forとかだけですけど) ばりばり初心者だったのですいません とりあえず普通に勉強していこうと思います ありがとうございました
- 256 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 21:35:52 ]
- 質問です。
下のコードは書いているものの一部なのですが、 コメントのつけてある位置でエラーが出てしまい、コンパイルが通りませんでした。 typedef struct {int line, *col;} match_info; match_info *info; match_info *str_search(FILE *fp, char *sstr) { int line_cnt; .... // line_cntはここで値が代入されている info = (match_info *)malloc((line_cnt+1) * (sizeof(match_info))); info+line_cnt = NULL; // ここでエラー .... } エラーの内容は error: invalid lvalue in assignment でした。ちなみにinfo = NULLとしたところコンパイルできました。 info + 1 = NULLと定数を使用するとやはりコンパイルできません。 何故オフセットすると値を代入することができなくなってしまうのでしょうか。 お願いします。 (エラーの出ている箇所はこの部分だけであり、載せていない部分ではエラーはありませんでした)
- 257 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 21:38:03 ]
- >>256
infoはポインタでしかないから、それに何かを足したものはただの値でしかないから代入はできない。 やりたいことは、info[line_cnt] = NULLではないのか?
- 258 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 21:39:34 ]
- *(info + line_cnt)
- 259 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 21:42:39 ]
- >>257
ないな。match_infoが構造体だから代入できない。 まぁ恐らく、 info[line_cnt].line = 0; info[line_cnt].col = NULL; なのだろう。
- 260 名前:デフォルトの名無しさん [2008/05/03(土) 21:56:30 ]
- うるせええええええええええええええええええぞ
かすどもおおおお スレ違いなんだよ他でやれ
- 261 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 21:58:05 ]
- だからもちつけって
(オレモナー)
- 262 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:09:21 ]
- >>257-259
お早いレスありがとうございます。 やりたいことは確かに>>259の通りなのですが、 他の関数でinfoを門番までスキャンさせたくて、門番としてNULLを割り当てようとしました。 ちょうどコマンド引数のargv[argc]に'\0'が入っているような感じに使おうと思っているのです。 >>259のようにしてしまうと、他の関数ではinfoのメンバーを知らなくてはなりません。 質問では触れなかったのですが、検索用の関数を作っています。 最終的には、main()側でstr_search()や,infoの内容を見る関数をラップした関数を使えるようにするだけで、 他の部分は全てヘッダファイルに移し、隠蔽してしまおうと考えていました。(言葉足らずですみません) つまりinfoは作業用変数としたいのです。 関数の設計も含めて、何か良い方法がありましたら教えていただけないでしょうか。
- 263 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:11:47 ]
- 最後の要素のcolかlineに特別な値を割り当てておくしかないだろう
- 264 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:14:33 ]
- >>262
できない。 infoが配列の要素を指している以上、 その値は必ず配列上に存在する要素へのポインタにしかなりえない。
- 265 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:16:02 ]
- あとはline_cntを公開しておくしかないな
こーゆーことやるならC++のほうが圧倒的に楽だけどね…
- 266 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:18:13 ]
- >262
文字列の最後を\0で検出できるのは、\0が文字型の特殊な値だから。 同じように任意の型の配列の末尾を検出したいなら、特殊な値を割り当てて検出する以外にない。
- 267 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:22:50 ]
- どうしてもやりたいなら、 match_infoの配列ではなく、
match_infoのポインタの配列を使う。 match_info **info; info=(match_info **)malloc((line_cnt+1) * (sizeof(match_info *))); for(i=0;i<line_cnt;i++) info[i]=(match_info *)malloc(sizeof(match_info)); info[line_cnt]=NULL; こうすれば出来るけど、当然一個一個freeする手間がかかる。
- 268 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:24:02 ]
- >>262
argv[argc]は'\0'ではなくNULLな。 これはargvがポインタの配列だから実現できる。 infoはmatch_info型の配列だから、 末尾要素をNULLにしようとしても型が違う。
- 269 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:28:56 ]
- >>256
それはもしかするとこう? match_info** info; // ← match_info の配列ですね? { info = (match_info**)malloc(line_cnt+1)*szeof(match_info)); int i; for(i = 0; i < line_cnt + 1; i++) info[i] = NULL+ // ...
- 270 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:30:16 ]
- >>267
ががん。かぶってしもた・・
- 271 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:33:43 ]
- 構造体の中身を公開したくないのに構造体の内容で判定することはできない。
公開するか、ポインタの配列で実現するかの二択。
- 272 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:57:51 ]
- >>263-271
みなさんありがとうございます。 argv[]がargv[argc]までスキャンされるのは、 argv[]が文字列の"ポインタ"だからですね。勘違いしていました。 >>267>>269でおっしゃられているようにポインタ配列で実装しようと思います。 >>267>>269のようにmalloc()がネストされている場合は、 中をfree()してから外側をfree()しなければなりませんか? 手間がかかるようなら、>>263,265も考えてみようと思います。
- 273 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:07:18 ]
- |>>267>>269のようにmalloc()がネストされている場合は、
|中をfree()してから外側をfree()しなければなりませんか? もちろん
- 274 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:17:03 ]
- 正規表現のアルゴリズムを勉強したいんスけど、なんかグレートなテキストってないっスかねぇ〜?
- 275 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:23:46 ]
- >>274
エディタのマニュアルに書いてないかな
- 276 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:27:29 ]
- >>274
grepのソース
- 277 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:34:41 ]
- >>274
www.amazon.co.jp/dp/4781905854 この本に一章だけ書いてある。 本自体は有名だけど、この説明がいいかどうかは判断できない。
- 278 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:40:46 ]
- >>277
レビューワロタ 参考にしてる人多すぎだろ
- 279 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:40:52 ]
- 「詳説 正規表現」のコラムでも、正規表現をさらに学びたい人は >>277 の三章を進めると書いてあるな。
- 280 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:05:26 ]
- せっ・・・性器表現の勉強を(ry お勧めの参考書を(ry
- 281 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:21:41 ]
- >>274
手元にある本をあげておきます。 オートマトン・言語理論, 富田悦次・横森 貴, 森北出版 1992, ISBN4627805500 これがベストというわけではありませんが、まず理論的な部分をしっかりおさえておかないと、後々どうにもならなくなると思います。
- 282 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 03:45:27 ]
- #include のことを、シャープインクルードって言っていた香具師、手を上げろ! ノシ
- 283 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 03:50:06 ]
- えっ、違うの!?
- 284 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 03:52:10 ]
- 本場の職人なら、パウンド・インクルードという。
- 285 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 03:52:32 ]
- # #は井桁、ナンバーサインでシャープは♯なんだな。
斜めになっているのが縦棒か横棒か、違うんだなぁ。 シャープは楽譜の記号で使われているんだなぁ。 ぼぼぼ、僕はおにぎりが欲しいんだなぁ。
- 286 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 04:18:42 ]
- C#とかあるし、シャープで伝わるからそう読んでるな
むしろ井桁とかだと通じないことがあるし
- 287 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 04:29:29 ]
- シーナンバー・・・うむ・・・いや、いや、そうじゃなくて、C♯はちゃんと
シャープと書かれているんでしょう。同一視してはならぬ、決して。
- 288 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 04:35:23 ]
- C#は間違いなく井桁だな
まぁシャープの代わりに井桁を使っているから、井桁をシャープと読むのは不適切かも知れないが 井桁が通じないことがあるんだからしょうがない もっと普及させてこい。話はそれからだ
- 289 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 04:42:53 ]
- ♯の半角が存在しないから、代用しているのさ・・・そう思いたい・・・きっとそうだ。
♯を英語圏にも広めよう!
- 290 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 07:35:58 ]
- >>284
マジなのか どうでもいいけど ttp://cplusplus.syntaxerrors.info/index.php?title=Extra_tokens_at_end_of_pound_include_directive
- 291 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 09:46:44 ]
- 英語だといろんな呼ばれ方があるみたいだ。「シャープ」も含めて。
en.wikipedia.org/wiki/Number_sign#Other_names_in_English
- 292 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 10:17:44 ]
- 値のビット列表示をしたいのですができません
共用体とビットフィールドを使って実現しようと思ったのですができませんでした 下のプログラムだとどこがだめなんでしょうか? #include <stdio.h> int main(void){ union bits{ char ch; unsigned char a:1, b:1, c:1, d:1, e:1, f:1, g:1, h:1; } bits; bits.ch = 'a'; printf("%d %d %d %d %d %d %d %d\n", bits.a, bits.b, bits.c, bits.d, bits.e, bits.f, bits.g, bits.h); bits.ch = 'b'; printf("%d %d %d %d %d %d %d %d\n", bits.a, bits.b, bits.c, bits.d, bits.e, bits.f, bits.g, bits.h); bits.ch = 'c'; printf("%d %d %d %d %d %d %d %d\n", bits.a, bits.b, bits.c, bits.d, bits.e, bits.f, bits.g, bits.h); return 0; } /* 実行結果: 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 */
- 293 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 10:18:38 ]
- fgets(str, 32, fp);
こんな感じに書いたときに、 strの宣言がcharの配列だったらいいけど、 charへのポインタだったらだめだった。どうして?
- 294 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 10:31:08 ]
- >>293
運が悪くポインタの指す先が書き換えてはいけない場所だったから
- 295 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 10:54:19 ]
- >>292
a, b, c, d, e, f, g, h が union で共用されているから #include <stdio.h> int main(void){ union bits{ char ch; struct{ unsigned a:1, b:1, c:1, d:1, e:1, f:1, g:1, h:1; }; } bits; bits.ch = 'a'; printf("%d %d %d %d %d %d %d %d\n", bits.a, bits.b, bits.c, bits.d, bits.e, bits.f, bits.g, bits.h); bits.ch = 'b'; printf("%d %d %d %d %d %d %d %d\n", bits.a, bits.b, bits.c, bits.d, bits.e, bits.f, bits.g, bits.h); bits.ch = 'c'; printf("%d %d %d %d %d %d %d %d\n", bits.a, bits.b, bits.c, bits.d, bits.e, bits.f, bits.g, bits.h); return 0; }
- 296 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 10:56:19 ]
- >>293
ポインタを初期化していなかったに一票
- 297 名前:293 mailto:sage [2008/05/04(日) 11:04:20 ]
- >>294
>>296 そうだよね、何処にあるかわからない入れ物を渡してもダメに決まってるよね。 すっきりしますた。
- 298 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 11:10:44 ]
- >>295
unsigned とかやってるとサイズが4バイトになるから union bits{ char ch; struct{ unsigned char a:1, b:1, c:1, d:1, e:1, f:1, g:1, h:1; }; } bits; にしないとマズいかもしれない。 ただ、ビットフィールドを含む構造体のサイズは処理系依存なので難しい所だが。 さらに言えばビットフィールドのビットがどちら側から埋められるかは処理系依存だから、 union bits{ char ch; struct{ #ifdef BITFIELD_LITTLE_ENDIAN unsigned char h:1, g:1, f:1, e:1, d:1, c:1, b:1, a:1; #else unsigned char a:1, b:1, c:1, d:1, e:1, f:1, g:1, h:1; #endif }; } bits; として処理系ごとに切り替えられるようにするのが良い。
- 299 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 11:13:03 ]
- unsigned char に対応していない処理系を考慮するなら
union bits{ char ch; struct{ #ifdef BITFIELD_LITTLE_ENDIAN #ifdef BITFIELD_INT_SIZE unsigned : sizeof (unsigned int) * CHAR_BIT - 8; unsigned h:1, g:1, f:1, e:1, d:1, c:1, b:1, a:1; #else unsigned char h:1, g:1, f:1, e:1, d:1, c:1, b:1, a:1; #endif #else #ifdef BITFIELD_INT_SIZE unsigned a:1, b:1, c:1, d:1, e:1, f:1, g:1, h:1; #else unsigned char a:1, b:1, c:1, d:1, e:1, f:1, g:1, h:1; #endif #endif }; } bits; とすることになるが、この共用体のサイズが1であることは期待できない。
- 300 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 11:28:45 ]
- >>295,298,299
ビットフィールドが全部同じ位置を使っていたということですね プリプロセッサディレクティブは未学習なのですが、イメージはつかめました ありがとうございました
- 301 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 12:05:18 ]
- 1ビットしかなくて読むだけなのにビットフィールドの共用体なんてフツー使わねえよ。
#define BIT(val, pos) (((val) >> (pos)) & 1) int ch; ch = 'a'; printf("%d %d %d %d %d %d %d %d\n", \ BIT(ch,7), BIT(ch,6), BIT(ch,5), BIT(ch,4), BIT(ch,3), BIT(ch,2), BIT(ch,1), BIT(ch,0));
- 302 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 12:08:57 ]
- >>301
普通って何さ
- 303 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 12:38:48 ]
- >>302
普通って普通さ
- 304 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 13:43:24 ]
- まあ確かにビットマスク使ったほうが楽だな
- 305 名前:デフォルトの名無しさん [2008/05/04(日) 17:45:50 ]
- コマンドプロントでテキストファイル.Cをコンパイルするにはどうすればいいの?
パスはしたの通りです。 C:\Users\ユーザー名\Documents\Aディレクトリ\テキストファイル.C C:\Bディレクトリ\コンパイラ
- 306 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 18:18:23 ]
- > コンパイラ /?
> コンパイラ /H $ コンパイラ -h $コンパイラ --help
- 307 名前:デフォルトの名無しさん [2008/05/04(日) 18:53:08 ]
- えwどういうことw
- 308 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 18:55:18 ]
- >>307
コンパイラによって方法が違うからコンパイラのマニュアルを見るか 有名なコンパイラなら名前を書け
- 309 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 18:55:53 ]
- ヘルプ見ろ
- 310 名前:デフォルトの名無しさん [2008/05/04(日) 19:05:39 ]
- え そうなんだ
MinGWなんだけど
- 311 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:12:19 ]
- MinGWならgccかな
> C:\Bディレクトリ\コンパイラ が気になるけどたぶん gcc C:\Users\ユーザー名\Documents\Aディレクトリ\テキストファイル.C C:\Bディレクトリ\コンパイラ C:\Users\ユーザー名\Documents\Aディレクトリ\テキストファイル.C どっちかかもね?
- 312 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:20:27 ]
- gcc --help
と叩けば使いかたが出る。
- 313 名前:デフォルトの名無しさん [2008/05/04(日) 19:31:39 ]
- > C:\Bディレクトリ\コンパイラ は C:\TYC4TH\gcc ってことです
その二つでためしたんですが、 gcc C:\Users\ユーザー名\Documents\Aディレクトリ\テキストファイル.Cの場合 'gcc' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 C:\Bディレクトリ\コンパイラ C:\Users\ユーザー名\Documents\Aディレクトリ\テキストファイル.Cだと 'C:\TYC4TH\gcc' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません
- 314 名前:デフォルトの名無しさん [2008/05/04(日) 19:33:02 ]
- ってでます><
- 315 名前:デフォルトの名無しさん [2008/05/04(日) 19:39:10 ]
- >>312
なんか英語がたくさんでて意味がわからない・・・
- 316 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:42:10 ]
- 日本語を含む場合は""で括る
例)gcc "C:\Bディレクトリ\コンパイラ" >'gcc' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。 gccコマンドのパスが通っていない、正しくない
- 317 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:49:07 ]
- gccインストールしてからMinGWインストールすると
パス通すかの確認があった気がしたけど・・・ MinGWをインストールしなおして確認してみるか、 $HOME/.bashrcにexport PATH=$PATH:コンパイラの入ってるディレクトリ を追加してみ MinGWコンパイラの入ってるパスは$HOMEからの相対パスがいいかな ちなみにMSYSも入れるとうれしくなれるかも
- 318 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:49:48 ]
- >MinGWコンパイラの入ってるパスは
コンパイラの入ってるパスは 訂正
- 319 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:51:13 ]
- >コンパイラの入ってるパスは
コンパイラの入ってるディレクトリは 打つ出し脳
- 320 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:51:51 ]
- MinGW - Minimalist GNU for Windows
OSはWindowsじゃないの? XP なのか 9x なのかによっても設定方法違うけど
- 321 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:55:06 ]
- c:\autoexec.batに
PATH=c:\MinGWまでのディレクトリ\bin;%PATH% これを書き込んで再起動すればばよかった、、、はず・・・多分
- 322 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:57:08 ]
- 折角隔離スレがあるんだから誘導しろよ。
Cygwin + MinGW + GCC 相談室 Part 3 pc11.2ch.net/test/read.cgi/tech/1177944767/
- 323 名前:デフォルトの名無しさん [2008/05/04(日) 20:19:39 ]
- おぉ できたかもです!!
みなさんありがとうございます。 さっそく勉強してきます。
- 324 名前:デフォルトの名無しさん [2008/05/04(日) 20:51:46 ]
- #include <windows.h>
typedef HRESULT (STDMETHODCALLTYPE *LPFNGETCORSYSTEMDIRECTORY)(LPWSTR, DWORD, DWORD *); int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpszCmdLine, int nCmdShow) { WCHAR szBuf[256]; DWORD dwLength; HMODULE hmod; LPFNGETCORSYSTEMDIRECTORY lpfnGetCORSystemDirectory; 略 lpfnGetCORSystemDirectory = (LPFNGETCORSYSTEMDIRECTORY)GetProcAddress(hmod, "GetCORSystemDirectory"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (lpfnGetCORSystemDirectory == NULL) { MessageBox(NULL, TEXT("関数がエクスポートされていません。"), NULL, MB_ICONWARNING); FreeLibrary(hmod); return 0; } 略 } 上記のようなプログラムを見かけましたが波線の部分関数ポインタの動作いまいち理解できません。 どなたかご教示お願いします。
- 325 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:53:20 ]
- >>293
以下の記述で普通に動作しています。 環境 cygwin/WindowsXP, 処理系 gcc 3.4.4 #include <stdio.h> #define N 1024 int main() { char buffer[N], *p; p = buffer; fgets(p, N, stdin); printf(">%s", p); return 0; } /* end */ 動作しないソースと環境・処理系を教えていただければ、何かわかるかもしれません。
- 326 名前:325 mailto:sage [2008/05/04(日) 21:54:30 ]
- 失礼、解決ずみでした。
- 327 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:40:56 ]
- >>324
関数ポインタとは動作するものではありません もう少し質問内容を吟味してくださらないと答えようがありません
- 328 名前:デフォルトの名無しさん [2008/05/05(月) 04:08:44 ]
- >>81ってどうやるのかな
- 329 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 06:47:41 ]
- >>324
何を聞きたいのか今ひとつわからんが、とりあえずMSDN。 msdn.microsoft.com/ja-jp/library/64tkc9y5(VS.80).aspx
- 330 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:03:48 ]
- >>324
GetProcAddress は指定した関数へのアドレスを返すんだけど、 GetProcAddress の戻り値の型は1つに定めないといけないので GetProcAddress は関数へのアドレスをとりあえず FARPROC って型にして返すようにしてある。 実際にこの関数のアドレスを使う際には、 本来の関数ポインタ型へとキャストして使う必要がある。
- 331 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 14:15:49 ]
- stdlib.hにあるsystem関数って、標準ですか?
どの処理系でもまともな動作が期待できる?
- 332 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 15:04:12 ]
- >>331
プログラマを目指すならもちとあいまいな問いにならないよう気をつけないと。 質問がとんでもなく飛んでいる。 どの処理系・・・列記してみて まともな動作・・まともってなによ(この質問はちょっとあほっポイ匂い)
|

|