读书人

c++的白痴有关问题

发布时间: 2012-02-29 16:44:10 作者: rapoo

c++的白痴问题
#include <iostream>
using namespace std;
void printaaa(void);

int main()
{
printaaa();//就是个调用函数的问题
return 0;
}

void printaaa(void)
{
cout < < "aaaaaaaaaa ";
}

先声明我是菜鸟,看那个调用函数的那一句 printaaa();
①我改了它 改成 void printaaa();
然后程序就什么也不显示了
②如果我改成 printaaa(void); 就连编译也通不过了

为什么?高手来解释一下这两个,,,谢谢了

[解决办法]
void printaaa(void);
这个在编译器看来是一个函数的声明而不是调用,所以当然就什么都不作了
[解决办法]
编译器龟定。
[解决办法]
你是什么编译器,VC6 OK
[解决办法]
函数声明中,返回类型的void不能省略,参数列表中的void可以省略,以下两种声明形式都可以:void printaaa();
或void printaaa(void);
函数声明可以放在所有函数外面或者某个函数内部,对函数的可见行不同(这是对C编译器而言,C++编译器不存在这个问题)
所以对于问题①,void printaaa();是声明,当然不会被执行

函数调用中,无参数传入时不能写void(void只用于声明),问题②的答案就很清楚了,呵呵
[解决办法]
C标准 无法嵌套声明
[解决办法]
C中函数声明:
void fun(void);
C++中的函数声明:
void fun();
[解决办法]
第一次那个,编译器将其视为声明,所以什么都不做;
第二次那个,编译器将其视为定义,由于不能嵌套定义,所以是一个错误。
[解决办法]
xiantongyuan() 的是正解,

读书人网 >C++

热点推荐