user-0 提问: 明明写了main函数 为什么还提示没有定义呢

回复:
user: user-1
content: 大括号没对齐

user: user-2
content: 有空运行下你的代码。。。。。

user: user-3
content: scaner 函数最后少好大括号  主函数中，ch=getchar;   改成 ch=getchar();

user: user-4
content: 偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译，直到定位到具体语法出错的位置。” 的方法解决的。  关于自己是否适合编程的很简单的测试： 在报纸或杂志上随便找一段约1000字的文章，在Word中输入一遍。输完后再参考下面答案：  A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样，且自我感觉很有成就感  A不适合编程（理由：打字准确度偏低、粗心大意） B初级程序员（理由：打字准确度很高、认真细致、自信、理解全角半角概念） C高级程序员（理由：在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证） D软件项目经理（理由：能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业！）  如果想从A变成B的话，到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”

user: user-5
content: #include <stdio.h>                  /*定义I/O库所用的某些宏和变量*/ #include <string.h>                 /*定义字符串库函数*/ #include <conio.h>                 /*提供有关屏幕窗口操作函数*/ #include <ctype.h>                  /*分类函数*/ char prog[80] = { '\0' }, token[20];                     /*存放构成单词符号的字符串*/ char ch; int syn,                           /*存放单词字符的种别码*/ n, // sum,                           /*存放整数型单词*/ m, p;                           /*p是缓冲区prog的指针，m是token的指针*/ char  *key[10] = { "int", "char", "double", "for", "else", "if", "do", "while", "return" };  int IsKey(char *token){ 	for (int i = 0; i < 9; i++){ 		if (strcmp(token, key[i]) == 0) 			return 1; 	} 	return 0; }  void scaner(){ 	m = 0; 	//sum=0; 	for (n = 0; n < 8; n++) 		token[n] = '\0'; 	ch = prog[p++]; 	while (ch == ' ' || ch == '\t' || ch == '\n')//忽略空格 制表符 换行符  		ch = prog[p++]; 	/*ch为字母字符时*/ 	if (isalpha(ch)){ 		//token[m]=ch;  		while (isalpha(ch) || isdigit(ch)){    /*ch 为字母字符或者数字字符*/ 			token[m++] = ch; 			ch = prog[p++];    //获取下一个字符  		} 		token[m++] = '\0';    //'\0' 代表字符结束(空格) 		ch = prog[p--];       //回退字符  退还给输入串  		// syn=10;  		/*字符串的比较*/  		if (IsKey(token)) 			printf("%s\t$关键字\n\n", token);      //输出关键字	     		else 			printf("%s\t$普通标识符\n\n", token);//不是关键字 		//            if(strcmp(token,key[n])==0){ 		//                syn=n+1; 		//                break; 		//	} 	} 	//若开始判断的字符不是字母  判断是否是数字 	else{ 		if (isdigit(ch)){ 			while (isdigit(ch)){ 				token[m++] = ch; 				ch = prog[p++]; 			} 			token[m++] = '\0'; 			ch = prog[p--]; 			printf("%s\t$整数\n\n", token); 		} 		else{ 			switch (ch){ 			case'[': 			case']': 			case'(': 			case')': 			case'{': 			case'}': 			case',': 			case'"': 			case';': 				printf("%s\t$界符\n\n", token); break; 			case'+': 				ch = prog[p--]; 				token[1] = ch; 				if (ch == '=') 					printf("%s\t$运算符\n\n", token);//运算符"+="           				else if (ch == '+') 					printf("%s\t$运算符\n\n", token); //判断结果为"++"           				else { 					ch = prog[p--]; 					printf("%s\t$运算符\n\n", token); //判断结果为"+"          				} 				break; 			case'-': 				ch = prog[p--]; 				token[1] = ch; 				if (ch == '='){ 					printf("%s\t$运算符\n\n", token); 				} //运算符-=  				else if (ch == '-'){ 					printf("%s\t$运算符\n\n", token); //判断结果为"--"  				} 				else { 					ch = prog[p--]; 					printf("%s\t$运算符\n\n", token); //判断结果为"-"          				} 				break; 			case'*': 			case'/': 			case'!': 			case'=': 				ch = prog[p--]; 				if (ch == '='){ 					printf("%s\t$运算符\n\n", token);   // *= ; /= ;！= ; ==       				} 				else { 					ch = prog[p--]; 					printf("%s\t$运算符\n\n", token); 				}         break; 			case'<': 				ch = prog[p--]; 				token[1] = ch; 				if (ch == '='){ 					printf("%s\t$运算符\n\n", token); //判断结果为运算符"<="          				} 				else if (ch == '<'){ 					printf("%s\t$运算符\n\n", token); //判断结果为"<<"          				} 				else { 					ch = prog[p--]; 					printf("%s\t$运算符\n\n", token); //判断结果为"<"          				}         break; 			case'>': 				ch = prog[p--]; 				token[1] = ch; 				if (ch == '=') printf("%s\t$运算符\n\n", token); 				else { 					ch = prog[p--]; 					printf("%s\t$运算符\n\n", token); 				}         break; 			case'%': 				ch = prog[p--]; 				token[1] = ch; 				if (ch == '=') 					printf("%s\t$运算符\n\n", token);      // '%=' 				if (isalpha(ch)) 					printf("%s\t$类型标识符\n\n", token);       // int/float/double/char  '%d' ;'%f';'%c','%s'  				else { 					ch = prog[p--]; 					printf("%s\t$取余运算符\n\n", token); 				}        break; 			default: 				printf("无法识别字符!\n\n"); break; 			} 		} 	} } void main(){ 	ch = getchar(); 	do{ 		prog[p++] = ch; 		ch = getchar(); 	} while (ch != '#'); }

user: user-0
content: 可以了 谢了	[Error] invalid conversion from 'int (*)()' to 'char' [-fpermissive]是哪里错了呢

user: user-6
content: scaner 是不是缺一个 }  main 的返回值类型没有？