[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/24 21:17 / Filesize : 258 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.38【環境依存OK】



1 名前:デフォルトの名無しさん [2007/06/03(日) 22:33:55 ]
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sage禁止です。
【前スレ】
【初心者歓迎】C/C++室 Ver.37【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1178432985/l50
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm


610 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 21:58:45 ]
HTMLだってLanguageと名前についてるだろ
SQLはプログラミング言語じゃなくて、データベース言語だろ

611 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 21:59:39 ]
Languageは「言語」であって「プログラミング言語」ではないからな。

612 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 23:07:19 ]
>>594
for(A; B; C) { D } で、
A を処理して、B を判定して、D を実行して、C を実行して、また B を判定して・・・
とか考えるのは効率が悪い。

グルングルンと実行されるみたいな流れを
もっとグラフィカルに頭に思い浮かべるのがコツ。
一旦処理の流れを線でつないで紙に書いて、
それを意識するもんだ。

613 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 23:08:18 ]
HTML はプログラミング言語じゃなくてマークアップ言語。

TeX あたりだと単なるマークアップ言語と言い切るのは微妙だがな。

614 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 23:56:37 ]
SQLがチューリング完全でないことは明白。

615 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 00:22:00 ]
何言ってるの?

616 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 08:02:03 ]
わからないなら調べてから聞けよ

617 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 08:07:53 ]
あ〜い、とぅいまてぇ〜ん♪

618 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 09:34:26 ]
>>602
IEに限って言えば条件がIEのバージョンに限定されるけど条件分岐が使えるっぽ



619 名前:デフォルトの名無しさん [2007/06/17(日) 12:43:27 ]
親クラスのprotectedな変数が、public継承した子クラスでは
publicにならずにprotectedなままなのは何故ですか?

親クラスのpublicな変数が、protected継承した子クラスでは
protectedになるのに。

publicよりもprotectedの方が強いと理解しておけばよいのでしょうか


620 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 12:46:05 ]
そう理解しておけばおk
そしてプライベートが最強と

621 名前:デフォルトの名無しさん [2007/06/17(日) 12:55:24 ]
>>620
ありがとうございました。
そう理解しときます。


622 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 14:57:34 ]
=演算子をオーバーロードするときにthisポインタを戻り値にしてるんですが、
thisポインタを戻り値にしない書き方ってありますか?

623 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 14:58:53 ]
ありますよ

624 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:01:58 ]
それは例えばどういった書き方でしょうか?


625 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:03:17 ]
>>624 void operator = (...

626 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:04:43 ]
a = b + c + d;の処理の流れって、

a = (b + c) + d; //まずbにcを加算
a = ((b + c) + d); //次にb+cの値にdを加算

最後に aに代入という流れで理解してよいのでしょうか?
詳しく教えてください。

627 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:06:25 ]
デバッグ

628 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:06:57 ]
デバッグする環境がありません・・・すいません。




629 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:09:12 ]
>>625
マジサンキュー
課題が終わった

630 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:10:36 ]
>>626
その例はその理解で正しい。
演算の順序は、演算子の優先順位と結合規則によって決まってる。

631 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:13:46 ]
いや待て、a = b + (c + d)という解釈をしているかも知らん。

632 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 15:28:39 ]
c+dを先にやるなら+をオーバーロードしたときに参照を渡せないから
b+cが先だろ

633 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 16:40:39 ]
>>630
しかし、順序が変更されても結果に影響が出ない範囲でなら
最適化で順序が入れ替えられる可能性はあるな。
ま、結果に影響が出る場合(そういう風にオーバーロードした場合等)は
そういうことは絶対にないが(コンパイラにバグでもない限り)。

634 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 16:56:56 ]
>>633
コンパイラのバグを前提にして「可能性はある」なんて言うことに何の意味があるのかね?

635 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 17:08:24 ]
???
誰もそんな事言ってないぞ?

636 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 17:14:59 ]
結果に影響が出ない範囲で入れ替えられても気にする必要は無いな。

637 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:18:51 ]
a = b() + c() + d();

で、b, c, d の呼び出される順番は未定義だっけ?
結合順と、各項の評価順はまた別の話だよな。

638 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:37:07 ]
fgetsの使い方で

fgets(buf, sizeof(buf), stdin);

のような常套句がありますが、これは sizeof(char) が1であることが
前提になっていますよね。もし sizeof(char) が2だったら、読み込む文字数が
想定した数の2倍になってしまうと思うのですが。

こういった書き方は問題ないのでしょうか。



639 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:40:16 ]
>>638
sizeof(char)は常に1

640 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:41:57 ]
>>638
sizeof(char)は絶対に1だから安心しる。

ただ関数によっては、バッファのバイト数を与えるのか文字列長を与えるのか
分かりにくい場合があるから、wchar_tを使ってるとちょっと困ることがある。

641 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:43:56 ]
charが1バイトじゃなくて1バイトの定義がchar?

642 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:44:21 ]
charは常に1バイト

643 名前:638 mailto:sage [2007/06/17(日) 18:47:09 ]
レスありがとうございます。
charが常に1バイトというのは、規格で決まっているのですか?

644 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:48:49 ]
>>643
決まってる。

ただ、「buf の型が char である」ということに依存しているから、
ここを変更したいと思った場合に変更を要するコードである事は確かだな。

645 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:50:14 ]
誤解があるといけないから念のために言うけど、
char が 1 バイトというのは決まってるが、
1 バイトが 8 ビットである保証はない。
1 バイトが 9 ビットの環境もある。

646 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:51:29 ]
1バイトのビット数を取得するマクロってありますか?

647 名前:638 mailto:sage [2007/06/17(日) 18:51:48 ]
皆さんありがとうございました。勉強になりました。

648 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 18:57:42 ]
アルバイトのヒト数を取得するユニクロってありますか?



649 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 19:19:40 ]
>>646
CHAR_BIT

650 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 20:31:59 ]
>>637
未定義。iccだとご丁寧に「想定外の呼び出し順序になる可能性がある」と指摘してくれる。

651 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:06:51 ]
たまにはlimits.hも眺めよう

652 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:08:10 ]
float.h も眺めようぜ

653 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:10:15 ]
眺めすぎて惚れるなよ

654 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:21:25 ]
やだ・・///

655 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:22:24 ]
構造体やクラスを関数内で定義すること、
つまり、以下のようなことがしたいのですが
これは規格でできることが保証されていますか?

void hoge() {
 struct hage {
  ...
 };
 ...
}

656 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:23:44 ]
>>655 C89 の頃から余裕で使える。

657 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:26:15 ]
ちなみに関数内で関数は定義できません

658 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:33:03 ]
>>656
ちゃんと規格で決まってるんですか。
知りませんでした。
どうも、ありがとうございます。

>>657
構造体やクラスの静的関数で代用するのが常套句になってますね。



659 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 21:44:49 ]
GCC の拡張でよければ関数内関数は使えるんだけどな。確か。

660 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 22:29:53 ]
関数内クラスをテンプレート引数に出来たらなぁ
と思うことがある

661 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 23:05:55 ]
charのバイト数の件で便乗質問。
shortって俺の使ってる環境では2byteなんだけど、これって決まってるんですか?
決まってないのなら確実に2byteの型は有りますか?
また確実に4byteの型はありますか?

662 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 23:07:51 ]
longは32bit以上というのはK&Rに書かれていた気がする。
というか規格原理主義者によると、1バイトが何ビットかも決められていないとか

663 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 23:17:52 ]
>>661
#include <stdint.h> で int16_t と int32_t でおk。

664 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 23:20:56 ]
>>661
sizeof (short) == 2と規格で定まっているわけではない
でも規格の最大値・最小値の規定から少なくとも16ビット以上あるということは導ける
同様に(662も書いてあるように)、longが少なくとも32ビットあるということも導ける

2バイトの方が欲しければ、C99なら<stdint.h>のint16_tやint_least16_tが使える
前者がぴったし16ビットの型(対応する型があれば用意されている)
後者は少なくとも16ビットの型(絶対に用意されている)

後者だけ必須なのは1バイトが8ビットでない環境の存在を考えれば納得

C++に今のところ<stdint.h>は、存在しないから
<boost/integer.hpp>や<boost/cstdint.hpp>で代用するくらいしかない

665 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 23:32:47 ]
C/C++で処理系依存なのは、もう諦めるしかないんじゃないか?

666 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 23:48:09 ]
必要以上に移植性を求めるのは不毛。
必要以上に移植性を失うのも愚かしいこと。

667 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 23:53:10 ]
俺ッち、__propertyとか__finallyとか好きな訳だけど、使っちゃって委員会?^^

668 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 23:56:15 ]
どうせ他の部分も環境依存しまくりなんだろ?
どんどん使っちゃえYO!



669 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:04:53 ]
>>667
__closureも活用してもっと便利に!

670 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:13:58 ]
勉強になるな。

671 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:19:27 ]
#include <stdint.h>
VC6だと「そんなヘッダ見つからねーよ。死ねボケ。」って言われてしまった OTL。

672 名前:デフォルトの名無しさん [2007/06/18(月) 00:47:53 ]
質問
void hoge()
{
何かの処理
#ifdef DEBUG
  printf("Debug %s, nanka);
#endif
何かの処理
#ifdef DEBUG
  printf("Debug %s, nanka);
#endif
↑こんな調子で数百行位ある
}
こういう汚い関数を直したいんだが

void DebugPrint(char *str)
{
#ifdef DEBUG
  printf("Debug %s, str);
#endif
}
void hoge()
{
何かの処理
  DebugPrint(nanka);
何かの処理
  DebugPrint(nanka);
}
って感じに直したいんだが、やったら動作変わっちゃう?
#ifdefあんま使ったこと無いから教えてくださいな

673 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:48:22 ]
そりゃそうだろ

674 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:49:09 ]
>>673
すんません
分かり易く解説お願いします

675 名前:673 mailto:sage [2007/06/18(月) 00:49:19 ]
>>671
の事ね

VC6が出来たのはだいぶ前だから

676 名前:672 mailto:sage [2007/06/18(月) 00:50:28 ]
>>675
あ、すんません
タイミング良かったんで即レス来たのかと思っちゃいましたw

677 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:57:26 ]
#ifdef DEBUG
  #define DEBUG_PRINT(a) printf("Debug %s, (a))
#else
  #define DEBUG_PRINT(a)
#endif


void hoge()
{
何かの処理
  DEBUG_PRINT(nanka);
何かの処理
  DEBUG_PRINT(nanka);
}

こういうのはよくやるな。
ただ、printfは引数の数が可変だから、引数の数にばらつきがあるとまた別の対策が必要になるが。

678 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:04:08 ]
>>677
おぉ、なるほど

後、確認なんですけど、自分が書いた>>672だと動作変わっちゃうんですよね?

勉強として実際のソース見て動きを理解しろ
とか言われてるんですが、こんなソースばっかで
見づらくてしょうがないんで
何とかしたくて・・・
コメントアウトと/*2007/6/19追加バージョン6.2*/等と#ifdef何チャラの嵐です・・・Orz



679 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:05:32 ]
別に動きは変わらんと思うが

680 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:11:32 ]
>>679
あ、そうなんですか?
ありがとうございます

個人的にはDebugPrintの部分は他から呼びたいので
関数化したいな〜と思ってたんですけど、
#ifdefとかはコンパイル時に読み込まれるとか有ったので
動作変わっちゃうのかと・・・糞初心者ですんません
(もう、たまにソース直せと言われるとおっかなビックリっす・・・)


681 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:12:16 ]
失礼、
×他から
○他からも


682 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:13:48 ]
動きは変わらないが、
後者は関数呼び出しのオーバーヘッドが発生する。


683 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:20:02 ]
関数本体の中にやたらと#ifdefなんかが入ってるのは、
あんまりいいコードとはいえないな。
「見づらくてしょうがない」というその感覚は限りなく正しい。
改善する方法をいろいろ考えるべきだな。


684 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:25:43 ]
>>682
すいません

そのオーバーヘッドって遅くなるって事ですよね?
どの程度遅くなりますか?

>>683
ありがとうございます
パワハラ上司なんで聞くに聞けなくて
ここでたまに質問してます
見やすくしろって教えてくれたのもこのスレです


685 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:39:54 ]
関数を呼び出すという処理は、それ自体スタック操作や
プログラムカウンタの移動などの処理が行われる。
だから、>>672 のように関数を呼ぶ形にすると、その分オーバーヘッドが発生する。
一方で>>677の方法だと、不要なときには関数呼び出し自体がなくなるので、
そういう心配がない。この方法が好んで使われる所以。

ただ実際は、よほどタイミングがシビアだったり、デバッグプリントがめちゃくちゃ多かった
りしなければたいしたオーバーヘッドではないので問題にはならない。

でも、リリースバージョンのプログラムの中に、不要な関数呼び出しが残るのって
美しくないとは思わないかい?


686 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:47:04 ]
>>685
なるほど、詳しい解説ありがとうございます

せっかく用意したDebugPrintなのに
リリース等の時は実際は使わないのに
その度にDebugPrintの文だけより道、遠回りしちゃうって事ですね
確かに綺麗じゃないですね

687 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 01:56:30 ]
可変長引数マクロを使えるコンパイラならこんなこともできる
#if DEBUG
#define DebugPrint(...) fprintf(stderr, "\nDebugPrint : File %s - Line %d\n", __FILE__, __LINE__),fprintf(stderr, __VA_ARGS__)
#else
#define DebugPrint(...)
#endif

688 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:01:41 ]
リリース版ではインライン関数にして、
コンパイラの最適化に期待する手もある。



689 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:02:11 ]
/* 古いコンパイラで使える技 */
#if DEBUG
#define DebugPrint(args) printf args
#else
#define DebugPrint(args)
#endif

/* 使い方(一回余計に括弧で括らないといけないのが欠点だが) */
DebugPrint(("%d\n", 1234));

690 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:03:19 ]
古くなくてもできることないか?

691 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:03:47 ]
>>687,>>689
おぉ、凄いですね

色々ご教授ありがとうございます

>>688
もし良ければその方法も教えて頂けないでしょうか・・・

692 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:16:33 ]
1. インライン関数の定義を別ファイルに分ける

2. inline を INLINE マクロに置き換える
  INLINE マクロの定義は以下の通り(これは自分で定義する)

#ifdef NDEBUG
#define INLINE inline
#else
#define INLINE
#endif

3. リリース版の場合はヘッダファイルでインクルードする

#ifdef NDEBUG
#include "***.***"
#endif

4. デバッグ版の場合はソースファイルでインクルードする

#ifndef NDEBUG
#include "***.***"
#endif

693 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:16:49 ]
#if DEBUG
#define DebugPrint printf
#else
#define DebugPrint (int)sizeof
#endif

694 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:17:09 ]
C++なら、こんなことできるお

class DebugPrinter {
 DebugPrinter(const char *filename, int line) {...}
 void out(const char *format, ...) {...}
};

#if DEBUG
#define DebugPrint DebugPrinter(__FILE__, __LINE__).out
#else
#define DebugPrint
#endif

695 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:21:38 ]
>>694 リリースでエラーにならないか?

696 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:30:28 ]
>>695
エラーにはならないがデバッグ用のコードが完全には消えないという問題がある。

697 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:30:35 ]
>>695
たぶん、ならんよ。リリース時は
DebugPrint("%d, %d", f(x), f(y)); → ("%d, %d", f(x), f(y));
ってなるだけだから。

ただ、これがいやなら、>>693のようにsizeofしちゃうか、
dummyの関数作って
#if DEBUG
#define DebugPrint DebugPrinter(__FILE__, __LINE__).out
#else
inline DebugPrintDummy(const char *filename, ...) {}
#define DebugPrint DebugPrintDummy
#endif
って感じにしちゃうのがいいかもね

698 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:33:27 ]
VC++ なら ((void)0) (VC6まで)か __noop (VC2002以降)にした方がいいね。



699 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:34:36 ]
if(1); else に置換するという技もある。
多分最適化で消える。

700 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:39:27 ]
>>697
関数 f が副作用を持ってたら問題があるな。

701 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:39:55 ]
VC++ならTRACEで以上では?

702 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:41:56 ]
皆さん
感謝、感激雨あられです

ちょっとF1見てる隙にこんなに書き込みが・・・

色々参考にさせてもらいます

703 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:52:34 ]
何F1見てんだよこのヤロー

704 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:55:55 ]
ああ、F1押すと長々と待たされた後で
役に立たないヘルプが出るよね

705 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:56:43 ]
>>700
まあ、必要なら>>699で多分消せるじゃね?

>>701
TRACEは問題点は以下の3つ。
1,Windows限定
2,Boost.Formatなどの他の形式が使えない
3,出力先が変更できない
他にもあるかもしれんがよく分からん

706 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 02:57:53 ]
必要ならって言うか、必須なんだぜ。

707 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 03:02:02 ]
>>706
いや、そういう意味じゃなくて、
関数の副作用をどうしても消したいならって意味だお。
残したい場合も当然あるでしょ?

708 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 03:06:34 ]
>>699 だと式のつもりが文になってしまうね。



709 名前:デフォルトの名無しさん [2007/06/18(月) 03:10:09 ]
ちょっと相談です。
言語はCでもC++でも構いません。
ちなみに開発環境はWin2000+VisualStudio2005です。

DLLで用意された、既存の関数 Func(char* str) を呼び出す必要があります。
この関数は、処理結果を文字列として str に返してくれます。
strに渡される文字列の長さは *不明* です。
DLL、および関数Funcの中身を弄ることは出来ないものとします。

この時、長さの不明なstrを、安全に処理するテクニックがあれば教えてください。


710 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 03:18:04 ]
>>708
これならいけるかな?
#define DebugPrint 1 ? (void)0 : DebugPrintDummy






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef