不同编译器(Code::Blocks 和 VC)对语法的支持
1. 《C和指针》上说,对数组初始化时,如果初始化值的个数大于数组元素是非法的,但在Code::Blocks 10.05上确未提示任何错误或警告信息,但在VC 6.0和VS 2008下都报相同的错误:初始化值太多。
int c[3] = {1, 2, 3 ,4}; // 是否非法
2. 定义一个指向数组的指针时,以下语句Code::Blocks 10.05下同样编译正常,而在VC 6.0和VS 2008下也报同样的错误:int matrix[][]无法转换为int *
int matrix[3][10];
int *mp = matrix; // 是否非法
对于上面两个语法,标准是否有明确定义呢?还是这个语法确实会在不同编译器下产生不一样的结果。谢谢!