2016年11月14日 星期一

[C/C++] Function 參數裡的 void

在 C/C++ 裡面,如果 function 回傳的 type 是 void 的話,代表這個 function 沒有回傳任何東西。

但是如果是在參數裡面呢?

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() {}

Reference

沒有留言:

張貼留言