引数の省略記号について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
トントン
記事: 100
登録日時: 14年前

引数の省略記号について

#1

投稿記事 by トントン » 12年前

お世話になります、トントンです。

DxLib.hの中を見たときに下記のような関数を見つけました。

コード:

extern int DrawFormatStringMask( int x, int y, int Flag,  const TCHAR *FormatString, ... ) ;
この関数の最後の引数「...」がどのようなものかが調べるのがメンドクサクテ
わからず困っています。
JISにあるC言語の規格書を見てみたのですが、
p.93 引用
6.7.5.3 関数宣言子(関数原型を含む)

並びの最後が省略記号(,...)の場合、そのコンマ以降の実引数の個数及び
型に関する情報はない。並びの中の唯一の項目がvoid型で名前のない仮引数である
という特別な場合、関数が駆り引数をもたないことを指定する。
とあります。正直、上の情報だけだと(だけのせい?)、
そもそも引数を省略することを明示する意味すらよくわからないですし
後半部分はどのような状況を言っているのかわかりません。
ただ、stdarg.hでアクセス可能?とも記載されているので
何かしら意味があるのはわかるのですが。。。
具体的にどういう使われ方がされ、どういうメリットがあるのでしょうか?

お手数おかけしますが、よろしくお願いします。

nil
記事: 428
登録日時: 13年前

Re: 引数の省略記号について

#2

投稿記事 by nil » 12年前

最も簡単なところで言えば『...』はprintfやscanfに使われています。
例えばprintfの場合、
printf( "%d, %u, %s, %p, %c\n", a, b, c, d, e );
なんて風に書式指定子の数だけ引数を複数、状況に合わせて取ることができます。

DrawFormatStringMask
もprintfと変わりません。

だんごさん
記事: 273
登録日時: 13年前

Re: 引数の省略記号について

#3

投稿記事 by だんごさん » 12年前

DrawFormatStringは書式付き文字を表示する関数です。
…の部分は%dなど数値を入れる変数などを書くところです。たぶん。
それをMaskで表示させるということですかね、調べてないんで分かりませんが。
 Dango San

トントン
記事: 100
登録日時: 14年前

Re: 引数の省略記号について

#4

投稿記事 by トントン » 12年前

>涼雅さん
涼雅 さんが書きました:最も簡単なところで言えば『...』はprintfやscanfに使われています。
例えばprintfの場合、
printf( "%d, %u, %s, %p, %c\n", a, b, c, d, e );
なんて風に書式指定子の数だけ引数を複数、状況に合わせて取ることができます。

DrawFormatStringMask
もprintfと変わりません。
なるほど、printfの引数も『...』になっていますね。
そして、複数の引数を指定できましたね。
納得しました。回答ありがとうございます。

トントン
記事: 100
登録日時: 14年前

Re: 引数の省略記号について

#5

投稿記事 by トントン » 12年前

>だんごさん
だんごさん さんが書きました:DrawFormatStringは書式付き文字を表示する関数です。
…の部分は%dなど数値を入れる変数などを書くところです。たぶん。
それをMaskで表示させるということですかね、調べてないんで分かりませんが。
だんごさんの回答も涼雅さんと同じですね。
(先に関数の使い方を調べればよかったと反省しつつ。。。そうすれば関連性も調べられたかな。。。)

回答ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る