函数原型不匹配,程序仍在Visual studio 2008和gcc编译器上运行

函数原型不匹配,程序仍在Visual studio 2008和gcc编译器上运行,c,C,函数原型不同于调用和定义;不过,它并没有在VisualStudio和gcc编译器上给出任何错误 #include<stdio.h> void print(); //prototype void main() { print(2,2); //calling } void print(int a,int b) //definition { printf("\na=%d\tb=%d",a,b)

函数原型不同于调用和定义;不过,它并没有在VisualStudio和gcc编译器上给出任何错误

    #include<stdio.h>

    void print(); //prototype

    void main()
    {
          print(2,2); //calling
    }

    void print(int a,int b) //definition
    {
        printf("\na=%d\tb=%d",a,b);
    }
#包括
作废打印()//原型
void main()
{
打印(2,2);//调用
}
无效打印(int a,int b)//定义
{
printf(“\na=%d\tb=%d”,a,b);
}

使用上述声明的函数原型,
您可以将任意数量的参数传递给函数,而不管该函数需要多少个参数

比如说

#include<stdio.h>

void print();//prototype

void main()
{
      print(2,2);//calling
      print(3);           // This would also work output a = 3, b = garbage value
      print(4,5,6);       // This would also work output a = 4, b = 5
}

void print(int a,int b)//defination
{
    printf("\na=%d\tb=%d",a,b);
}
#包括
作废打印()//原型
void main()
{
打印(2,2);//调用
print(3);//这也会对输出a=3,b=garbage值起作用
print(4,5,6);//这也适用于输出a=4,b=5
}
无效打印(int a,int b)//定义
{
printf(“\na=%d\tb=%d”,a,b);
}
注意:如果不想向函数传递任何参数,建议使用void
作废打印(作废)6.7.5.3函数声明器(包括原型)14

标识符列表仅声明 功能。函数声明器中的空列表,它是 该函数的定义指定该函数没有 参数。函数声明符中不属于部分的空列表 该函数的定义的定义指定没有关于 提供了参数的数量或类型


void print()//prototype
将被视为一个原型,例如没有指定参数。

编译器的可能副本只是为了你好。或邪恶。可能两者都有。
void print()
不是原型。和
void main()
应该是
int main(void)
void print(int*);void main()。这意味着它依赖于编译器注意:在
C++
中,它将被视为没有参数。