首页 > 解决方案 > clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 架构 x86_64 的未定义符号:

问题描述

CellType 的声明有什么问题?这是链表的一个实现。listHead 是一个新的空链表。由于在代码的其他部分使用 listHead,我试图将其声明为全局变量。

#include <iostream>

typedef struct CellType* Position;
typedef int ElementType;
struct CellType{
    ElementType value;
    Position next;
};

class List{
public:
    CellType* listHead;
    void makeNull();    //Create a new list
    void insertList(ElementType x, Position p); //Insert element to the list
    void deleteList(Position p);    //delete an element at position p
    Position first();   //get Position of first
    Position end();     //get Position of end
    Position next(Position p);  //get position of next
    void printList();   //print list
};

void List::makeNull(){
    listHead = new CellType;
    listHead -> next = NULL;
}

void List::insertList(ElementType x, Position p){
    Position temp;
    temp = p -> next;
    p->next = new CellType;
    p->value = x;
    p->next->next = temp;
}

void List::deleteList(Position p){
    p->next = p->next->next;
}

Position List::first(){
    return (listHead);
}

Position List::end(){
    Position p;
    p = listHead;
    while(p->next != NULL){
        p = p->next;
    }
    return(p);
}

Position List::next(Position p){
    return(p->next);
}

标签: c++algorithmdata-structures

解决方案


此问题与 os 版本更新和 g++ 版本有关。我正在使用 MacOS 10.15.5。

用 g++ 再次编译然后链接成功。


推荐阅读