0

我在以下代码中不断收到错误“宏名称必须是标识符”,我不知道为什么。据我所知,我没有违反任何命名标准。这是来自我的“dllist.h”文件:

#ifndef _DOUBLY_LINKED_LIST_
#define _DOUBLY_LINKED_LIST_

template <class T>
class IntDLLNode {

friend class IntDLList;
 
    public:

        IntDLLNode() {next = prev = NULL;}

        IntDLLNode(const T& el, IntDLLNode *n = NULL, IntDLLNode *p = NULL) {
        info = el;
        next = n;
        prev = p;
        }

protected:

        T info;
        IntDLLNode<T> *next, *prev;
};

template <class T>
class IntDLList {

    public:

    IntDLList() {head = tail = NULL;}

    void addToDLLTail(const T& el);
    void addToDLLHead(const T& el);
    T deleteFromDLLTail();
    T deleteFromDLLHead();
    void deleteNode(int);
    void isInList(int) const;
    void addSorted(int);
    void printList();

private:

    IntDLLNode<T> *head, *tail;
};

#endif 

我也尝试过像 DOUBLY_LINKED_LIST 和 DOUBLYLINKEDLIST 这样的名称——所有这些都会导致相同的错误。

4

2 回答 2

2

你违反了规则。_DOUBLY_LINKED_LIST_是无效的标识符。任何以下划线开头,紧跟大写字符的内容都保留用于实现。

试试DOUBLY_LINKED_LIST

也尝试#include <cstddef>NULL. 或使用0. 或者更好的是,如果您支持 C++11,请使用std::nullptr.

于 2012-12-10T00:21:23.627 回答
0

尝试

 #if !defined( _DOUBLY_LINKED_LIST_)

代替

#ifdef _DOUBLY_LINKED_LIST_
于 2012-12-10T00:39:16.937 回答