
No.2ベストアンサー
- 回答日時:
>なぜですか?
何故かは人によりけりだと思いますが、
C言語での実装上、引数はスタックに順に並んでいること
になっていますが可変引数とはこれをマクロを使ってポインタ
計算しそれぞれの引数をvoid*型のデータとみなして分解するので
いろんな意味で危険だったりします。
ほかにも、型のサイズなんかによって落とし穴が多い
#特にC++と混ざるとオブジェクトの型やサイズは計算しづらく
#可変引数はその型を知る方法も実装依存になる
ので理解して無理に使うより、そもそも本当に可変で実装しないと
いけないか実装を見直すほうが良いかと。
#実際私は、デバッグ用のログや文字列とかを出力したりするくらいにしか使ったこと無いです。。。
No.3
- 回答日時:
可変長引数は危険ですからねぇ.
特に, コンパイラで型チェックや自動的な型変換ができないのが痛い. printf とか scanf ではまるというのはよくある光景です.
まあ, 「無理に使うのは理解できていないからだ」とは思いますが>#2, 覚えたてだと使いたがるかも.
No.1
- 回答日時:
この回答への補足
>でも使わない方が良い。
なぜですか?
以下の理由だからですか?
>va_start>とva_endマクロの呼び出しは忘れないように注意して下さい。忘れると動作がおかしくなり、最悪の場合、プログラムが強制終了します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C言語教えてください】sin波...
-
cshの文字列操作(0埋め)
-
error C2143: 構文エラー : ';'...
-
unsigned int型について
-
10個出力で改行したいのですが...
-
8人分のテストの点数を入力し、...
-
*を使ったジグザグのラインをプ...
-
WM_CLOSEで閉じれないウィンド...
-
defineで定数が置き換えられな...
-
C言語 素数判定
-
コンパイルエラーについて
-
C言語プログラミング 漸化式に...
-
wsprintfの書式制御文字列につ...
-
printfでSegmentation fault
-
Cプログラムについて
-
三角形の判別
-
コマンドラインに出力した文字...
-
並べ替えについて
-
アドレスの比較について
-
printf で二進表示を行いたい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
c言語でAからZまでを表示する...
-
(C言語)めちゃくちゃな値にな...
-
コマンドラインに出力した文字...
-
コンパイルエラーについて
-
コマンドプロンプトがすぐ消える
-
勝率をプログラムに
-
テキストカーソル位置の取得
-
三角形の判別
-
【C言語教えてください】sin波...
-
4の倍数を論理演算で表す。。
-
C言語で、「自然数nを入力し、n...
-
入力したお金の金額からお札の...
-
cshの文字列操作(0埋め)
-
switch分のケースを範囲数?に...
-
scanfに文字が入力されたときに...
-
プログラミングについての質問です
-
unsigned int型について
-
ダブルポインタで2次元配列を作成
-
円の面積を求めるプログラミン...
おすすめ情報