引起大多数实际问题的C / C++不兼容并不是很细微的。大多数都容易被编译器捕获。
本节提供了非C++的C代码示例:
1)在C语言中,可以使用一种语法来定义函数,该语法可以在参数列表之后选择性地指定参数类型:
// C code that uses argument types after
// the list of arguments.
#include
void fun(a, b)int a;int b; // Invalid in C++
{
printf("%d %d", a, b);
}
// Driver code
int main()
{
fun(8, 9);
return 0;
}
Output:
8 9
Error in C++ :- a and b was not declared in this scope
2)在C和C++的预标准版本中,类型说明符默认为int。
// C code to show implicit int declaration.
#include
int main()
{
// implicit int in C, not allowed in C++
const a = 7;
printf("%d", a);
return 0;
}
Output:
7
Error in C++ :- a does not name a type
3)在C语言中,可以不使用extern说明符多次声明一个全局数据对象。只要这样的声明最多提供一个初始化程序,就认为该对象仅定义一次。
// C code to demonstrate multiple global
// declarations of same variable.
#include
// Declares single integer a, not allowed in C++
int a; int a;
int main()
{
return 0;
}
Error in C++ :- Redefinition of int a
4)在C中,可以将void *用作任何指针类型的变量的赋值或初始化的右侧操作数。
// C code to demonstrate implicit conversion
// of void* to int*
#include
#include
void f(int n)
{
// Implicit conversion of void* to int*
// Not allowed in C++.
int* p = malloc(n* sizeof(int));
}
// Driver code
int main()
{
f(7);
return 0;
}
Error in C++ :- Invalid conversion of void* to int*
5)在C语言中,可以通过一个初始化器初始化一个数组,该初始化器具有比数组所需的元素更多的元素。
// C code to demonstrate that extra character
// check is not done in C.
#include
int main()
{
// Error in C++
char array[5] = "Geeks";
printf("%s", array);
return 0;
}
输出:
Geeks
Error in C++ :- Initializer-string for array of chars is too long
6)在C语言中,声明的函数如果不指定任何参数类型,则可以使用任意数量的任何类型的参数。单击此处了解更多信息。
// In C, empty brackets mean any number
// of arguments can be passed
#include
void fun() { }
int main(void)
{
fun(10, "GfG", "GQ");
return 0;
}
Error in C++ :- Too many arguments to function 'void fun()'
相关文章:
- 在C / C++中编写“ void main()”或“ main()”是否可以?
- C / C++中的“ int main()”和“ int main(void)”之间的区别?
- C++程序的输出|设置24(C++ vs C)
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。