我在以下代码中不断收到错误“宏名称必须是标识符”,我不知道为什么。据我所知,我没有违反任何命名标准。这是我的“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这样的名字 - 都会导致同样的错误。
答案 0 :(得分:2)
您违反了规则。 _DOUBLY_LINKED_LIST_
是无效的标识符。任何以下划线开头,后面紧跟大写字符的内容都是为实现保留的。
尝试DOUBLY_LINKED_LIST
。
还尝试#include <cstddef>
NULL
。或者使用0
。或者更好的是,如果你有C ++ 11支持,请使用std::nullptr
。
答案 1 :(得分:0)
尝试
#if !defined( _DOUBLY_LINKED_LIST_)
而不是
#ifdef _DOUBLY_LINKED_LIST_