刚才帮人解决了一个vc编程的疑难杂症.确实值得记录一下.这个错很有味道.
C2085 not in formal parameter list错误号C2085,意思是出错变量不在形参列表中.行参列表,指的是函数声明或者定义的形参声明部分.出这个错,往往是因为出错位置或者此位置之前的一个函数的声明或者定义有语法错误.这次解决的这个疑难杂症是这样的.
涉及三个文件.
第一个文件, A.c
#include "B.h"
#include "C.h"
第二个文件, B.h
int function(int a,int b)
第三个文件, C.h
int x;
编译A.c,就会有错误提示C2085,在C.h的int x;这一行出错.
C.h(1) : error C2085: 'x' : not in formal parameter list
提示x变量没有在形参列表中.
于是打开C.h,看了老半天,觉得int x;这行实在不该有错.错误可能并不在C.h,而是在它之前的那个头文件,B.h中. 打开B.h,发现最后一行的这个函数声明,缺少了一个分号,于是编译器在编译A.c的时候,将B.h和C.h依次展开,便将C.h中的x变量当作了function函数的形参,进而报错.