标题:『*****C程序找错*****』
取消只看楼主
剑子与剑痴
Rank: 1
等 级:新手上路
帖 子:10
专家分:4
注 册:2010-10-7
结帖率:0
已结贴  问题点数:20 回复次数:4 
『*****C程序找错*****』
这是一个头文件,代码如下:
程序代码:
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<stdio.h>


//用typedef自定义类型
typedef struct address{
        char name[6];
        char tel[18];
        struct address *next;
    }ADDR;

//宏定义函数ASk(),调用一次产生一新结点
#define ASK(p) do{ \
      p=(ADDR *)malloc(sizeof(ADDR)); \
      if(p==NULL) { printf("memory faill!");exit(); } \
    }while(0)

extern int count;

ADDR *input(ADDR *);
void display(ADDR *);
int menu_select(void);
void handle_menu(ADDR *);
ADDR *del(ADDR *);


结果如下:
程序代码:
d:\编程\msdev98\myprojects\vitas_2010_10_12_1\vitas2010_10_12_the1\record.h(20) : error C2501: 'p' : missing storage-class or type specifiers
d:\编程\msdev98\myprojects\vitas_2010_10_12_1\vitas2010_10_12_the1\record.h(20) : error C2440: 'initializing' : cannot convert from 'struct address *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
d:\编程\msdev98\myprojects\vitas_2010_10_12_1\vitas2010_10_12_the1\record.h(21) : error C2143: syntax error : missing ';' before 'if'
d:\编程\msdev98\myprojects\vitas_2010_10_12_1\vitas2010_10_12_the1\record.h(21) : error C2143: syntax error : missing ';' before '{'
d:\编程\msdev98\myprojects\vitas_2010_10_12_1\vitas2010_10_12_the1\record.h(21) : error C2447: missing function header (old-style formal list?)
d:\编程\msdev98\myprojects\vitas_2010_10_12_1\vitas2010_10_12_the1\record.h(22) : error C2143: syntax error : missing ';' before '}'
d:\编程\msdev98\myprojects\vitas_2010_10_12_1\vitas2010_10_12_the1\record.h(22) : error C2143: syntax error : missing ';' before '}'
d:\编程\msdev98\myprojects\vitas_2010_10_12_1\vitas2010_10_12_the1\record.h(22) : error C2143: syntax error : missing ';' before '}'

这个是我从书上打下来的,有小小改动,想了很久也不知所以,求救。。。
搜索更多相关主题的帖子: address 
2010-10-12 20:05
剑子与剑痴
Rank: 1
等 级:新手上路
帖 子:10
专家分:4
注 册:2010-10-7
得分:0 
回复 2楼 m21wo

全放上来的话可能很乱,毕竟文件有点多

http://u.



2010-10-12 20:25
剑子与剑痴
Rank: 1
等 级:新手上路
帖 子:10
专家分:4
注 册:2010-10-7
得分:0 
回复 2楼 m21wo
//宏定义函数ASk(),调用一次产生一新结点
#define ASK(p) do{p=(ADDR *)malloc(sizeof(ADDR));if(p==NULL) { printf("memory faill!");exit(-1); } }while(0)
现将头文件中的宏定义函数ASk()的标识符部分改成一行,并对其他文件中的错漏修正后,语法无错。


那就应是
#define ASK(p) do{\
p=(ADDR *)malloc(sizeof(ADDR));if(p==NULL) { printf("memory faill!");exit(-1); } \
}while(0)

中的换行符使用出错了,请问下换行符“\”的正确用法还有使用时有什么需要注意的地方。

而在语法方面改正错误后,我在运行时出现了如下语句:
程序代码:
--------------------Configuration: HHH - Win32 Debug--------------------
Compiling...
record.c
input.c
display.c
del.c
Linking...
record.obj : error LNK2001: unresolved external symbol _count
input.obj : error LNK2001: unresolved external symbol _count
display.obj : error LNK2001: unresolved external symbol _count
del.obj : error LNK2001: unresolved external symbol _count
Debug/HHH.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

HHH.exe - 1 error(s), 0 warning(s)
==========================================
error LNK2001

==========================================
我照网上的方法更改了一些设置,问题仍未解决,望高手有空指正
2010-10-12 21:37
剑子与剑痴
Rank: 1
等 级:新手上路
帖 子:10
专家分:4
注 册:2010-10-7
得分:0 
回复 2楼 m21wo
这是源文件,望高手有空指正下,谢:

http://u.
2010-10-12 21:40
剑子与剑痴
Rank: 1
等 级:新手上路
帖 子:10
专家分:4
注 册:2010-10-7
得分:0 
嗯,我书上的头文件也是
程序代码:
#ifndef RECORD_H
#define RECORD_H
。。。。。。。
。。。。。。。
#endif
这种形式的,我看了觉得多余就去掉了。
而关于刚才我修改后了现的count没定义的情况(record.obj : error LNK2001: unresolved external symbol _count),
我将头文件中的extern int count中的extern去掉后运行通过了,这个觉得很奇怪

2010-10-12 23:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-322709-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.658639 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved