我正在研究几个包含通用代码的项目。这些项目使用不同的内核运行,但有以下差异:
typedef long long i64;
// typedef unsigned long long u64; // In project A
// typedef unsigned long u64; // In project B
typedef int i32;
typedef unsigned int u32;
typedef short i16;
typedef unsigned short u16;
typedef char i8;
typedef unsigned char u8;
typedef void* Data;
// typedef u32 ptr; // 32b pointer in project A
// typedef u64 ptr; // 64b pointer in project B
但是,当然,我希望将来以不同的配置来支持新内核。
我不是OOO专家,所以我看到以下解决方法:
1)创建“ ProjDefs.h”的2个副本,并将其从项目的任何位置包括在内(在项目A中,“ ProjDefs.h”的内容将与项目B的内容不同)。我相信这是一种错误的方式(但这就是我部门的每个人都在做的事情。)
2)让每个类都从“ Object.h”继承,这将强制执行这些特定类型并具有以下代码:
template <typename Core>
class EV_Object{
typename Core::I64 I64;
typename Core::U64 U64;
typename Core::I64 I32;
typename Core::I64 U32;
typename Core::I64 I16;
typename Core::I64 U16;
typename Core::I64 I8;
typename Core::I64 U8;
typename Core::Ptr Ptr;
};
让每个类都继承自它,从而接收正确的类型定义。 问题是:
A)每个类都需要从其继承。
B)因为这是模板,所以我将无法使用源文件(仅标头)。
再次,我距离C ++专家还很远,但这也感觉不正确。
有什么建议吗?
谢谢,
答案 0 :(得分:1)
您绝对应该做的是删除“本地车库标准”类型,而改用<ion-header>
<ion-tabs style="display: contents;">
<ion-tab-bar slot="top">
<ion-tab-button tab="home">
<ion-router-outlet name="one"></ion-router-outlet>
<ion-label>Am besten bewertet</ion-label>
<ion-icon name="heart"></ion-icon>
<ion-badge>6</ion-badge>
</ion-tab-button>
<ion-tab-button tab="settings">
<ion-router-outlet name="one"></ion-router-outlet>
<ion-label>Trends</ion-label>
<ion-icon name="ice-cream"></ion-icon>
</ion-tab-button>
<ion-tab-button tab="new">
<ion-router-outlet name="one"></ion-router-outlet>
<ion-label>Neueste</ion-label>
<ion-icon name="clock"></ion-icon>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>
</ion-header>
。期。
是的,您需要更改整个程序-首先要怪罪那些决定自己制定类型标准的人。
至于指针,无论如何都不应将其隐藏在typedef后面。如果指针本身的大小很重要,那就是代码的味道。对于非常罕见的指针大小很重要的情况,请使用stdint.h
而不是依赖于typedef。