user-0 提问: VS2010编译报错的头疼问题，帮忙看下

回复:
user: user-0
content: [/quote]  #ifndef BUFF_SIZE #define BUFF_SIZE (1024*1024) #endif  这套语句的用法不是这样的啊.这是用来避免头文件重复包含的.  然后C90里面要用bool语句就是true和false必须包含头文件bool.h  然后你的分号可能写成中文了.[/quote]  这个也可以用来防止宏的重复定义~ 问题已经解决了，基本上都是按照上述给分的办法解决

user: user-0
content: 引用 20 楼 zhao4zhong1 的回复:[quote=引用 16 楼 liuhengxiao 的回复:] 继续发问。。。。编译都完成了，也能看到运行结果了，怎么找不到可执行文件啊？ 在debug的目录下面没有可执行程序  我用release 编译，也没有release文件夹。。。求解 关闭杀毒软件。 查看Building.html文件的内容。 资源管理器的搜索功能会用不？[/quote]  全盘搜索了。。没有找到我的可执行文件。。。  “FileOpr.exe”: 已加载“I:\VC++\FileOpr_object\Debug\FileOpr.exe”，已加载符号。 “FileOpr.exe”: 已加载“C:\Windows\SysWOW64\ntdll.dll”，Cannot find or open the PDB file “FileOpr.exe”: 已加载“C:\Windows\SysWOW64\kernel32.dll”，Cannot find or open the PDB file “FileOpr.exe”: 已加载“C:\Windows\SysWOW64\KernelBase.dll”，Cannot find or open the PDB file “FileOpr.exe”: 已加载“C:\Windows\SysWOW64\msvcr100d.dll”，已加载符号。  记录都说有这个文件了。。我也木有找到。。

user: user-1
content: 引用 10 楼 zhangshichuan972 的回复:这个很简单.所以我一直强调优秀的外国书籍的重要性.  这和后缀名无关.  VS2010 采用的标准是:c90,在这个标准里.变量的声明必须放在最前面.   int a=33,b=126;     int i; bzero(buff,size);     init_srand();   必须写成这样.不用费解为什么.标准就是这么设定的.  但是C99标准.如我用的是VS2013, 其标准为C99  C99支持变量任意位置声明.和C++一样.  所以学习不要只学语法.语言的标准也自己要去了解. 加油! 别忘了使用什么标准编译是可以配置的。

user: user-1
content: 引用 16 楼 liuhengxiao 的回复:继续发问。。。。编译都完成了，也能看到运行结果了，怎么找不到可执行文件啊？ 在debug的目录下面没有可执行程序  我用release 编译，也没有release文件夹。。。求解 关闭杀毒软件。 查看Building.html文件的内容。 资源管理器的搜索功能会用不？

user: user-2
content: 默认情况下，VS会在工程文件夹下生成Debug和Release目录的，如果没有请在VS中查看项目属性的输出目录在哪里！  项目属性->常规

user: user-0
content: 引用 17 楼 Symfund 的回复:不送分？检查下是不是忘记送分了?  还没结贴呐。。。

user: user-3
content: 不送分？检查下是不是忘记送分了?

user: user-0
content: 继续发问。。。。编译都完成了，也能看到运行结果了，怎么找不到可执行文件啊？ 在debug的目录下面没有可执行程序  我用release 编译，也没有release文件夹。。。求解

user: user-0
content: 引用 14 楼 Symfund 的回复:bool类型在C语言中是没有的啊！哈哈，又被我找到了！  。。。。。偶去查查去！

user: user-3
content: bool类型在C语言中是没有的啊！哈哈，又被我找到了！

user: user-0
content: 引用 10 楼 zhangshichuan972 的回复:这个很简单.所以我一直强调优秀的外国书籍的重要性.  这和后缀名无关.  VS2010 采用的标准是:c90,在这个标准里.变量的声明必须放在最前面.   int a=33,b=126;     int i; bzero(buff,size);     init_srand();   必须写成这样.不用费解为什么.标准就是这么设定的.  但是C99标准.如我用的是VS2013, 其标准为C99  C99支持变量任意位置声明.和C++一样.  所以学习不要只学语法.语言的标准也自己要去了解. 加油!  上述问题基本搞定，编译的时候又遇到个问题如下：  #ifndef BUFF_SIZE #define BUFF_SIZE (1024*1024) #endif  void bzero(char *buff,long int size); bool is_dir_access(char *file_path); char *get_current_dir_name(); long int get_file_size(FILE *fp);  这段声明居然也能给我报个错出来！昨晚查了半天也没找到原因 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2061: 语法错误: 标识符“is_dir_access” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“;” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“类型” 1>i:\vc++\fileopr_object\windowsfunc.c(17): warning C4133: “函数”: 从“char [260]”到“LPWSTR”的类型不兼容 1>i:\vc++\fileopr_object\windowsfunc.c(21): error C2061: 语法错误: 标识符“is_dir_access” 1>i:\vc++\fileopr_object\windowsfunc.c(21): error C2059: 语法错误:“;” 1>i:\vc++\fileopr_object\windowsfunc.c(21): error C2059: 语法错误:“类型” 1>  operation.c 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2061: 语法错误: 标识符“is_dir_access” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“;” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“类型” 1>i:\vc++\fileopr_object\operation.c(113): warning C4013: “is_dir_access”未定义；假设外部返回 int 1>i:\vc++\fileopr_object\operation.c(113): error C2065: “false”: 未声明的标识符 1>  linuxfunc.c 1>  function.c 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2061: 语法错误: 标识符“is_dir_access” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“;” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“类型” 1>  FileOpr.c 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2061: 语法错误: 标识符“is_dir_access” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“;” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“类型”

user: user-4
content: 引用 13 楼 liuhengxiao 的回复:[quote=引用 10 楼 zhangshichuan972 的回复:] 这个很简单.所以我一直强调优秀的外国书籍的重要性.  这和后缀名无关.  VS2010 采用的标准是:c90,在这个标准里.变量的声明必须放在最前面.   int a=33,b=126;     int i; bzero(buff,size);     init_srand();   必须写成这样.不用费解为什么.标准就是这么设定的.  但是C99标准.如我用的是VS2013, 其标准为C99  C99支持变量任意位置声明.和C++一样.  所以学习不要只学语法.语言的标准也自己要去了解. 加油!  上述问题基本搞定，编译的时候又遇到个问题如下：  #ifndef BUFF_SIZE #define BUFF_SIZE (1024*1024) #endif  void bzero(char *buff,long int size); bool is_dir_access(char *file_path); char *get_current_dir_name(); long int get_file_size(FILE *fp);  这段声明居然也能给我报个错出来！昨晚查了半天也没找到原因 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2061: 语法错误: 标识符“is_dir_access” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“;” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“类型” 1>i:\vc++\fileopr_object\windowsfunc.c(17): warning C4133: “函数”: 从“char [260]”到“LPWSTR”的类型不兼容 1>i:\vc++\fileopr_object\windowsfunc.c(21): error C2061: 语法错误: 标识符“is_dir_access” 1>i:\vc++\fileopr_object\windowsfunc.c(21): error C2059: 语法错误:“;” 1>i:\vc++\fileopr_object\windowsfunc.c(21): error C2059: 语法错误:“类型” 1>  operation.c 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2061: 语法错误: 标识符“is_dir_access” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“;” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“类型” 1>i:\vc++\fileopr_object\operation.c(113): warning C4013: “is_dir_access”未定义；假设外部返回 int 1>i:\vc++\fileopr_object\operation.c(113): error C2065: “false”: 未声明的标识符 1>  linuxfunc.c 1>  function.c 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2061: 语法错误: 标识符“is_dir_access” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“;” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“类型” 1>  FileOpr.c 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2061: 语法错误: 标识符“is_dir_access” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“;” 1>i:\vc++\fileopr_object\windowsfunc.h(12): error C2059: 语法错误:“类型”  [/quote]  #ifndef BUFF_SIZE #define BUFF_SIZE (1024*1024) #endif  这套语句的用法不是这样的啊.这是用来避免头文件重复包含的.  然后C90里面要用bool语句就是true和false必须包含头文件bool.h  然后你的分号可能写成中文了.

user: user-4
content: 引用 21 楼 zhao4zhong1 的回复:[quote=引用 10 楼 zhangshichuan972 的回复:] 这个很简单.所以我一直强调优秀的外国书籍的重要性.  这和后缀名无关.  VS2010 采用的标准是:c90,在这个标准里.变量的声明必须放在最前面.   int a=33,b=126;     int i; bzero(buff,size);     init_srand();   必须写成这样.不用费解为什么.标准就是这么设定的.  但是C99标准.如我用的是VS2013, 其标准为C99  C99支持变量任意位置声明.和C++一样.  所以学习不要只学语法.语言的标准也自己要去了解. 加油! 别忘了使用什么标准编译是可以配置的。[/quote] 对!.大神补充了.

user: user-5
content: .c文件，所有变量定义要放在最前面。

user: user-1
content: “FileOpr.exe”: 已加载“I:\VC++\FileOpr_object\Debug\FileOpr.exe”，已加载符号。  在I:\VC++\FileOpr_object\Debug\文件夹下面找。

user: user-1
content: 总不至于是你的exe里面包含自己将自己对应磁盘上的exe删除吧。 严重怀疑是正运行的杀毒软件或防火墙之类的软件将FileOpr.exe删掉了。

user: user-6
content: 看10L的答案吧 想简单点就把所有声明放至函数开始处

user: user-4
content: 这是编译器的语言标准的区别.不同的编译器的语言的标准不同.你不用记死了.

user: user-4
content: 这个很简单.所以我一直强调优秀的外国书籍的重要性.  这和后缀名无关.  VS2010 采用的标准是:c90,在这个标准里.变量的声明必须放在最前面.   int a=33,b=126;     int i; bzero(buff,size);     init_srand();   必须写成这样.不用费解为什么.标准就是这么设定的.  但是C99标准.如我用的是VS2013, 其标准为C99  C99支持变量任意位置声明.和C++一样.  所以学习不要只学语法.语言的标准也自己要去了解. 加油!

user: user-0
content: 引用 3 楼 Symfund 的回复:C源文件的变量类型申明要放到函数的开始处。  尝试中。。还有一堆代码要修改才能再次编译。。。