我在win7 vs2013下可以通过的代码,稍经修改后(删除stdafx等等)在linux gcc下总是提示error: ‘create_list’ was not declared in this scope
list_node* s1 = create_list();
小弟跪请各路大神帮小弟指点迷津谢谢...
我把有关头文件的引用的代码截图了,请各位大神留步...小弟第一次发文求助,如有说话不当之处还请多多包含

。
以下第一张是终端下gcc编译的结果,第二张是bigdata.cpp文件内容


以下这张是list_node.h文件:

以下这张是list_node.cpp文件:
如果图片开不太清我把代码再贴以下:
bigdata.cpp :
#include <iostream>
#include "list_node.h"
using namespace std;
void LIST_TEST_PACKAGE(){
//-------construct and destruct class-------//
list_node* s1 = create_list();
list_node* s2 = create_list("1234567890");
list_node* s3 = create_list(s2);
list_node* s4 = s3;
//-------Insert/Delete Item---------------//
s1->DeleteItem(s1); //invalid
s1->pop_back(); //invalid
s1->InsertItem('3', s1);
s1->push_back('5');
list_node* p =s2->DeleteItem( s2->get_aftr()->get_aftr()); //delete item '2',return the next item '3'
cout << p->get_data()<<endl;
//-------print-----------------------------//
s1->print();
s2->print();
s3->print();
s4->print();
}
int main()
{
LIST_TEST_PACKAGE();
system("pause");
return 0;
}
list_node.h文件:
#include<string>
#include <iostream>
using namespace std;
class list_node
{
private:
char data;
list_node* prev; //prev,上一个指针
list_node* aftr; //aftr ,下一个指针
public:
//-------construct and destruct class-------//
friend list_node* create_list(void); //default ctor, return by header.
friend list_node* create_list(const string str); //ctor.
friend list_node* create_list(list_node* header); //copy ctor, return by header.
list_node* operator=(list_node* header); //copy assignment ctor
void destructor(); //dtor, keep header.
//-------set/get private data/pointer------//
void set_data(const char &data);
int get_data() const;
void set_prev(const list_node* p);
list_node* get_prev() const;
void set_aftr(const list_node* p);
list_node* get_aftr() const;
//-------Insert/Delete Item---------------//
void InsertItem(const char item, list_node*p); //insert an item after pointer
list_node* DeleteItem(list_node*p); //delete the item,return a pointer after the item
void push_back(const char item); //insert an item at the back of the list
void pop_back(); //delete the final item
void print();
};
list_node.cpp文件:
#include "list_node.h"
void list_node::destructor(){
//destructor all the pointer except the header.
list_node* delpoint = this->aftr;
if (delpoint == this)
return;
list_node* delnext = delpoint->aftr;
while (delnext->data != '\0'){
delpoint->aftr = NULL;
delpoint->prev = NULL;
list_node* point = delpoint;
delpoint = delnext;
delete point;
delnext = delnext->aftr;
}
delete delpoint;
delnext->prev = delnext;
delnext->aftr = delnext;
//delete delnext;
}//
list_node* create_list(void){
list_node* newlist = new list_node;
newlist->prev = newlist;
newlist->aftr = newlist;
newlist->data = '\0';
return newlist;
}
list_node* create_list(const string str){
list_node* newlist = create_list();
for (unsigned i = 0; i < str.length(); i++)
newlist->push_back(str[i]);
return newlist;
}
list_node* create_list(list_node* header){
list_node* point = header->aftr;
if (header->data != '\0')
return NULL;
list_node* newlist = create_list();
while (1){
int buffer;
buffer = point->get_data();
if (buffer != -1)
newlist->push_back(buffer + 48);
else
break;
point = point->aftr;
}
return newlist;
}
list_node* list_node::operator=(list_node* header){
if (this == header)
return header;
this->destructor();
delete this;
return create_list(header);
}
void list_node::print()
{
list_node* point = this->aftr;
if (point == this){
cout << "It's empty.\n";
return;
}
while (1){
int buffer;
buffer = point->get_data();
if (buffer != -1)
cout << buffer;
else
break;
point = point->aftr;
}
cout << '\n';
}
void list_node::set_data(const char &data){
list_node::data = data;
}
int list_node::get_data() const {
if (data)
return (int)data - 48;
else
return -1;
}
void list_node::set_prev(const list_node* p){
prev =(list_node*) p;
}
list_node* list_node::get_prev() const {
return prev;
}
void list_node::set_aftr(const list_node* p){
aftr = (list_node*)p;
}
list_node* list_node::get_aftr() const{
return aftr;
}
void list_node::InsertItem(const char item, list_node*p){ //insert an item after pointer.
list_node* newitem = new list_node;
list_node* paftr = p->aftr;
newitem->data = item;
if (p->data == '\0') //只有表头数据
{
p->aftr = newitem;
newitem->prev = p;
p->prev = newitem;
newitem->aftr = p;
}
else
{
newitem->aftr = paftr;
paftr->prev = newitem;
newitem->prev = p;
p->aftr = newitem;
}
}
list_node* list_node::DeleteItem(list_node*p){ //delete the item,return a pointer after the item
if (p->data == '\0')
return NULL; //DeleteItem内不允许删除表头
list_node* rtnpointer = p->aftr;
p->prev->aftr = rtnpointer;
rtnpointer->prev = p->prev;
delete p;
return rtnpointer;
}
void list_node::push_back(const char item){ //insert an item at the back of the list
list_node* newitem = new list_node;
newitem->data = item;
list_node* enditem = prev;
newitem->aftr = this;
newitem->prev = enditem;
this->prev = newitem;
enditem->aftr = newitem;
}
void list_node::pop_back(){ //delete the final item
list_node* delpoint = this->prev;
if (delpoint == this) //cannot delete header.
return;
list_node* prevpoint = delpoint->prev;
this->prev = prevpoint;
prevpoint->aftr = this;
delpoint->aftr = NULL;
delpoint->prev = NULL;
delete delpoint;
}