我正在尝试完成“计算机科学基础,C 版”中的练习。下面的代码直接来自本书,但是当我尝试按照它们的描述包含和使用它时,我得到了编译器错误。
#define DefCell(EltType, CellType, ListType)
typedef struct CellType *ListType;
struct CellType {
EltType element;
ListType next;
};
/*************************************************
* DefCell(int, CELL, LIST);
*
* expands to:
*
* typedef struct CELL *LIST;
* struct CELL {
* int element;
* LIST next;
* }
*
* as a consequence we can use CELL as the type of integer cells
* and we can use LISTas the type of pointers to these cells.
*
* CELL c;
* LIST l;
*
* defines c to be a cell and l to be a pointer to a cell.
* Note that the representation of a list of cells is normally
* a pointer to the first cell on the list, or NULL if the list
* is empty.
*
****************************************************/
(这本书可以免费下载 - 此代码在第 23 页。)
我也尝试使用模板来解决其中一个练习(2.2.3):
DefCell(char, LETTER, STRING);
BOOLEAN FirstString(STRING s1, STRING s2);
我得到的错误是:
selectionsort.c:22:2: error: expected specifier-qualifier-list before ‘EltType’
selectionsort.c:60:28: error: expected ‘)’ before ‘s1’
selectionsort.c:133:28: error: expected ‘)’ before ‘s1’
我知道编译器不知道 STRING 或 EltType 是一种类型,但我不明白为什么不知道呢?这本书有点老了,所以 C 编程可能已经从书中的技术转移了。也有可能我只是误解了他们提出的想法的一些关键要素。在继续之前,我真的很想了解我做错了什么。任何人都可以帮忙吗?