1 const
const只修饰其后的变量,至于const放在类型前还是类型后并没有区别。如:const int a和int const a都是修饰a为const。注意*不是一种类型,如果*pType之前是某类型,那么pType是指向该类型的指针。
int const * p1,p2;
p2是const;(*p1)是一整体,因此(*p1)是const,但p1是可变的。int * p1,p2只代表p1是指向整型的指针,要表示p1、p2都是指针是需写成int * p1,* p2。所以无论是* const p1,p2还是const * p1,p2,里面的*都是属于p1的。
int const * const p1,p2;
p2是const,是前一个const修饰的,*p1也被前一个const修饰,而p1被后一个const修饰。
int * const p1,p2;
p1是const,(* const p1)是整体,所以const不修饰p2。
2 今天在ccs上面见到了一个问题,从来没有见过
error: symbol referencing errors,并且提示parsing restarts here after previous syntax error
我是在.c文件中定义了一个全局的变量。那么这是错误的。
正确的做法是将该定义放到.c文件中,然后如果需要在其他文件中使用,那么需要加扩展声明。