就像void *指针和指向不完整类型的指针一样,指向函数的指针不允许算术运算.
例如,关于Additive运算符的C99§6.5.6说:
另外,两个操作数都应具有算术类型,或者一个操作数应是指向对象类型的指针,另一个操作数应具有整数类型.(递增相当于添加1.)
函数类型不是对象类型,因此提供指向函数的指针作为运算+符的操作数是违反此约束的.
作为C语言的扩展,GCC编译器允许对指向函数(和指针void)的指针进行算术运算.它实现了这一点,就好像指向对象的大小为1.请注意,在符合标准的模式中,它会对此类代码发出警告.