使用typedef和 #define 进行不同的原型设计
Different prototyping with typedef and #define
我正在为一个项目编写一组链表函数。
我需要为列表节点中的数据类型(int/char)提供灵活性
所以我正在尝试做这样的事情:
在主要.cpp
#define INT_DATA
#include "lists.h"
....
在列表.h
#ifdef CHAR_DATA
typedef char DATA_TYPE;
#endif
#ifdef INT_DATA
typedef int DATA_TYPE;
#endif
typedef struct lnode {
DATA_TYPE data;
struct lnode* next; //points to the next node
} LNODE;
LNODE * createNewListNode(DATA_TYPE data, LNODE* next);
....
但这一切似乎都不起作用...我不想在原型不同时编写重复的代码。
我做错了什么?这可能吗?
请注意
这是一个练习,我不能使用类,我不能使用任何标准库
这是
C++模板进入的地方。模板允许您创建实现的框架。在这种情况下,您可能需要一个将"数据类型"作为参数的类。听起来不错...下面是它的样子:
template < typename DATA_TYPE >
struct lnode {
DATA_TYPE data;
lnode<DATA_TYPE>* next; //points to the next node
};
然后你可以像这样创建它们:
lnode<char> charNode;
lnode<int> intNode;
不要使用定义。使用模板(好文章:一和二)。
此外,该typedef struct lnode { /* ... */ } LNODE;
只是C,甚至不接近C++。
相关文章:
- C++:TypeDef使用元组
- 函数向量_指针有不同的原型,我可以构建一个吗
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 功能原型的目的
- getline() 的原型/库是什么;
- 为什么在使用typedef时类推导指南会失败
- 具有enable_if外部类原型的模板类构造函数定义
- 函数如何通知用户它基于函数原型抛出异常?
- 尝试根据类中 typedef 的存在来专门化模板函数
- 如何重新定义MPI_FLOAT,MPI_DOUBLE以 typedef 的方式
- typedef 枚举和枚举类有什么区别?
- 在C++中包含原型文件的正确方法是什么?
- 在函数中拥有函数原型的目的是什么?
- 在类模板中使用 typedef 时出错
- 模板类中的 typedef 语句
- 在 typedef 内部使用 const 关键字和在 typedef 外部使用 const 关键字之间有区别吗?
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 是否可以使用 libclang python 解析 cpp 文件中没有标头的函数原型
- 使用typedef和 #define 进行不同的原型设计