但是如果是在參數裡面呢?
void foo(void);
在 C 跟 C++ 中,代表的是 foo 這個 function 不接受任何參數,但是
void foo();
在 C 跟 C++ 的解釋卻不一樣。對 C 來說 foo 可以接收任意數的參數,但是 C++ 的解釋跟 foo(void) 一樣。
也就是說,以下的 code:
// test.c
void foo() {}
int main () {
foo (1, 2, 3, 4);
foo ("hello world");
return 0;
}
在 C 編譯時不會有任何問題,但是在 C++ 編譯的時候會跳錯誤:
test.c: In function ‘int main()’:
test.c:6:19: error: too many arguments to function ‘void foo()’
foo(1, 2, 3, 4);
^
test.c:1:6: note: declared here
void foo() {}
^
test.c:7:22: error: too many arguments to function ‘void foo()’
foo("hello world");
^
test.c:1:6: note: declared here
void foo() {}
沒有留言:
張貼留言