この質問は、C++11 または C でパラメーターがないことを意味する「f(void)」の派生物ですか?
何人かがその質問に答え、C では関数プロトタイプの意味は
void func ()
つまり、 func は何も返さない (void) 関数であり、そのパラメーターは現時点では不明です。
さらに彼らは、この宣言を行ってから、次のようないくつかの引数を使用して関数を呼び出すことができると意見を述べています。
func (1, 2, 3);
それで、私はこれを行い、これが機能することを確認するためにテストを行いました。
これが func.c です。main()
#include <stdio.h>
extern void func ();
int main (int ac, char ** av)
{
func (1, 2, 3);
return 0;
}
そして、ここに関数を含む func1.c がありますfunc()
#include <stdio.h>
void func (int a, int b, int c)
{
printf ( "%d, %d, %d\n", a, b, c );
}
そして、ここに私の質問があります
質問1:
このプログラムを実行すると、予想どおり、出力 1、2、3 が得られます。これはコードを安全に記述する方法ですか。つまり、ABI は、func()
inの呼び出しがmain()
3 つのパラメーターを適切な場所 (レジスター、スタックなど) に配置func()
して、それらを見つけることを確実に保証すると仮定できますか?
質問2:
上記の 1 に対する答えが、安全に行うことができるというものである場合func()
、C 以外の言語で実装されている場合、答えは変わりますか?