
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
関数の定義自体は、stdarg.hをインクルードしなくても出来ますよ。
(可変長引数のプロトタイプは、ANSI C準拠の処理系ならば、どこでも使えるはずですが。)
ちなみに下記のコードでテストしてみたところ、問題なく動作しました。
(gccのバージョンは2.95.2でした)
#include <stdio.h>
void arg(int n, ... );
int main(void)
{
arg(5, 1,5,3,4,7);
return 0;
}
void arg(int n, ... )
{
int *p = &n;
int i;
for (i = 0; i < n; i++)
printf("%d\n", *++p);
}
# 引数の渡され方が分かっていれば、stdarg.hがなくても処理できます。
No.2
- 回答日時:
#include <stdio.h>
#include <stdarg.h>
int func(int, ...) ;
int main(void)
{
func(1, "a") ;
func(2, "a", "ab") ;
func(3, "a", "ab", "abc") ;
return (0) ;
}
int func(int num, ...)
{
char *pp ;
int cc ;
va_list ll ;
va_start(ll, num) ;
for (cc = 0 ; cc < num ; cc++) {
pp = va_arg(ll, char *) ;
printf("%3d:\"%s\"\n", cc, pp) ;
}
va_end(ll) ;
return (cc) ;
}
egcs2.91.57(CygWin32上)ではオッケーでした。
MSVC++でもstdargはサポートされています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
入力された数字を大きい順に並...
-
int16_t の _t は何?
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
数字列を3桁ごとにカンマで区切...
-
C言語での平滑化フィルタ
-
実数の整数部,小数部の取得
-
エラー 添字が付けられた値が、...
-
毎回違う乱数を生成するにはど...
-
構造体のすべての変数を文字列...
-
コンパイルエラー
-
ブロックで };ついているのと...
-
ラップ関数とはどんなものですか?
-
整数データの配列から同じ値の...
-
if と配列の組み合わせ
-
商と剰余を同時に求める(C言語)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数桁10進数の*桁目だけを抽出...
-
C言語での引数の省略方法
-
「指定されたキャストは有効で...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 エラーの原因がわからな...
-
【C++】関数ポインタの使い方
-
ラップ関数とはどんなものですか?
-
エラー 添字が付けられた値が、...
-
acceptをalarmでタイムアウトさ...
-
if と配列の組み合わせ
-
式は定数値が必要です」という...
-
(マルチスレッド)_beginthrea...
-
構造体の勉強中です 合計点の高...
-
「{ } で囲むだけ」は正しい?
-
数字列を3桁ごとにカンマで区切...
-
return 1L
-
C#のコンパイルエラーCS0120に...
-
std::set<int> で、ある値が何...
-
C言語で分からないところがあり...
-
PowerShellがうまくいかない
おすすめ情報