| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1051 人关注过本帖
标题:c语言使用头文件调用其他文件函数时时链接报错,新手求指教~~
只看楼主 加入收藏
wdxpg123
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-8-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
c语言使用头文件调用其他文件函数时时链接报错,新手求指教~~
我写了一个栈的基本操作的ds3_seqStack2.cpp文件,函数声明和数据结构定义用了头文件ds3_seqStack2.h,然后写一个test.cpp文件include这个.h文件以调用栈基本函数,但是连接报错,下帖代码,求指教
/***********ds3_seqStack2.cpp************/
#include"stdio.h"
#include"stdlib.h"
#include "ds3_seqStack2.h"
int initStack(SqStack &s,int n) {
    s.data = (char *)malloc(n);
    if(s.data == NULL) {
        printf("space alloction fail\n");
        exit(0);
    }
    s.stackSize = n;
    s.top = -1;
    return 1;
}
int push(SqStack &s,char x) {
    if(s.top == s.stackSize-1) {
        printf("the stack is full\n");
        return 0;
    }
    s.data[++s.top] = x;
    return 1;
}
int pop(SqStack &s,char &x) {
    if(stackEmpty(s)) {
        printf("the stack is empty\n");
        return 0;
    }
    x = s.data[s.top];
    s.top--;
    return 1;
}
int stackEmpty(SqStack s) {
    if(s.top == -1) {
        return 1;
    }
    return 0;
}
int stackLength(SqStack s) {
    return s.top+1;
}
int clearStack(SqStack &s) {
    s.top = 1;
    return 1;
}
void stackTraverse(SqStack s) {
    for(int i=0;i<s.top+1;i++) {
        printf("%-3d",s.data[i]);
    }
    printf("\n");
}
/***********ds3_seqStack2.h************/
#ifndef SEQSTACK2_H
#define SEQSTACK2_H
typedef struct stack {
    char* data;
    int top;
    int stackSize;
}SqStack;
int initStack(SqStack &s,int n);
int push(SqStack &s,char x);
int pop(SqStack &s,char &x);
int stackEmpty(SqStack s);
int clearStack(SqStack &s);
int stackLength(SqStack s);
void stackTraverse(SqStack s);
#endif
/***********test.cpp************/
#include"stdio.h"
#include"ds3_seqStack2.h"
int parenthesesMatch(char* s);
void main() {
    char s[20];
    printf("Please input a expressions\n");
    scanf("%s",s);
    if(parenthesesMatch(s)) {
        printf("parentheses Match\n");
    }else {
        printf("parentheses doesn't Match\n");
    }
}
int parenthesesMatch(char* str) {
    SqStack s;
    char x;
    initStack(s,10);
    while(*str) {
        if(*str == '('|| (*str) == '[') {
            push(s,*str);
            str++;
        }
        else if(*str == ')') {
            if(s.data[s.top] == '(') {
                pop(s,x);
                str++;
            }
            else {
                return 0;
            }
        }
        else if(*str == ']') {
            if(s.data[s.top] == '[') {
                pop(s,x);
                str++;
            }
            else {
                return 0;
            }
        }
        else {
            str++;
        }   
    }
    if(stackEmpty(s)) {
        return 1;
    }else {
        return 0;
    }
}
error LNK2001: unresolved external symbol "int __cdecl stackEmpty(struct stack)" (?stackEmpty@@YAHUstack@@@Z)
error LNK2001: unresolved external symbol "int __cdecl pop(struct stack &,char &)" (?pop@@YAHAAUstack@@AAD@Z)
error LNK2001: unresolved external symbol "int __cdecl push(struct stack &,char)" (?push@@YAHAAUstack@@D@Z)
error LNK2001: unresolved external symbol "int __cdecl initStack(struct stack &,int)" (?initStack@@YAHAAUstack@@H@Z)
fatal error LNK1120: 4 unresolved externals
搜索更多相关主题的帖子: include return 
2012-08-01 16:10
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:20 
C程序为啥要用C++的后缀呢


2012-08-01 16:14
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
extern "C"

是不是加这玩意能好呢 或者改编译参数。。 这种毛病好复杂啊。。
2012-08-01 16:18
wdxpg123
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-8-1
收藏
得分:0 
问题已解决,用vc同时编译2个cpp文件就行
2012-08-01 17:53
快速回复:c语言使用头文件调用其他文件函数时时链接报错,新手求指教~~
数据加载中...
 
   



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

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