相关疑难解决方法(0)

C offsetof宏如何工作?

可能重复:
为什么这个C代码有效?
你如何在struct上使用offsetof()?

我在互联网上读到了这个偏移宏,但它没有解释它的用途.

#define offsetof(a,b) ((int)(&(((a*)(0))->b)))
Run Code Online (Sandbox Code Playgroud)

它想做什么以及使用它有什么好处?

c macros offset

11
推荐指数
3
解决办法
1万
查看次数

如何让我的对象重新解释为可转换为数组,比如std :: complex?

我刚才因为这个问题而学到了这个,标准是std::complex(26.4 [complex.numbers]):

4如果zcv 类型的左值表达式,std::complex<T>则:
- 表达式reinterpret_cast<cv T(&)[2]>(z)应格式良好,
- reinterpret_cast<cv T(&)[2]>(z)[0]应指定的实部z,并且
- reinterpret_cast<cv T(&)[2]>(z)[1]应指定虚部z.
此外,如果a是类型为cv 的表达式,std::complex<T>*并且表达式a[i]是为整数表达式定义的i,则:
- reinterpret_cast<cv T*>(a)[2*i]应指定的实部a[i],并且
- reinterpret_cast<cv T*>(a)[2*i + 1]应指定虚部a[i].

这是我真正想要以符合标准的方式利用的东西.有些时候我有POD,比如数学向量,它们由单一数据类型组成.这是两个示例类:

template <typename T, unsigned N>
struct Vector
{
    T v[N];
};

template <typename T>
struct Quaternion
{
    T r, i, …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

7
推荐指数
1
解决办法
314
查看次数

标签 统计

c ×1

c++ ×1

c++11 ×1

macros ×1

offset ×1