小编Sam*_*tha的帖子

聚合初始化,将成员指针设置为相同的结构成员

是否可以使用聚合初始化使指针aptr指向a同一成员struct

struct S {
  int a;
  int* aptr;
};

int main() {
  S s = {
    .a = 3,
    .aptr = &a //point aptr to a
  };
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是针对CC++

c c++ struct c11 c++20

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

如何在C中存储不同类型的数据?

我想存储一些数据,它们可以是仅在运行时才知道的其他类型。我不想浪费任何内存,而是想将所有数据读取为浮点值。在C ++中,我会做这样的事情

struct IA {
  virtual float value(int index) = 0;
};

template<class T>
struct A : public IA {
  A(T* bytes, uint32_t size) { 
    values.resize(size);
    memcpy(values.data(), bytes, size*sizeof(T));
  }
  float value(int index) override {
      return static_cast<float>(values[index]);
  }
  std::vector<T> values;
};


int main() {
  uint16_t bytes[] = {1, 2, 3, 4, 5 }; 
  IA *a = new A<uint16_t>(bytes, 5);
  float value = a->value(0);
  delete a;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何使用C而不是C ++做到这一点。我可以将数据存储在uint8_t数组中,并存储nr位和一个signed值。然后,每当我从数组中读取一个值时,就使用开关盒和强制类型转换。但是,如果数组很大并且读取次数很多,那将是昂贵的。

我还希望能够在不需要进行任何特殊情况的情况下传递数组?

c polymorphism virtual-functions c11

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

使用未声明的标识符“ NSBundle”

这是我的file.mm的样子:

const char *readFromFileMac(const char *fileName) {
    fileName =[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @(fileName)].UTF8String;
    return fileName;
}
Run Code Online (Sandbox Code Playgroud)

Xcode给我错误Use of undeclared identifier 'NSBundle'。我是否需要包含一些框架或头文件才能使用该NSBundle名称?

我唯一要做的就是将项目复制到另一个目录。复制后,我得到了这个错误,它以前可以正常工作。我正在使用Xcode 8.2

macos xcode objective-c nsbundle

0
推荐指数
1
解决办法
714
查看次数

标签 统计

c ×2

c11 ×2

c++ ×1

c++20 ×1

macos ×1

nsbundle ×1

objective-c ×1

polymorphism ×1

struct ×1

virtual-functions ×1

xcode ×1