什么类型的c类型?

Mat*_*hew 2 c c++ types

我想知道c中有哪些类型.例如,我该怎么做这样的事情.

type type_a = int;
type type_b = float;
Run Code Online (Sandbox Code Playgroud)

在我的项目的上下文中,我正在尝试创建一个可以如下使用的函数.

// createSelector(const char *name, ...)

Selector *mySelector = createSelector("myMethod", int, char);

// Selector->types contains all the passed types in an array.
// Selector->name contains the name of the method.
Run Code Online (Sandbox Code Playgroud)

如果c不支持此功能,我可以轻松地将我的项目转移到c ++.但是,我需要知道c ++中的类型是什么.任何帮助,将不胜感激.

Bil*_*eal 17

你不能用C或C++做到这一点.执行这种基于类型的内省的能力称为"反射",它不是C或C++中的特征.

老实说,如果你发现自己需要这样的东西,你需要对你的设计进行非常长时间的严格审视 - 需要这样的东西,即使是那些支持它们的语言通常也表明了对糟糕设计的论证.

  • @Matthew Lynn:是的,你需要编写自己的类型系统.您不能捎带C或C++本机类型,并期望为您提供这样的工具.真正的机器不知道"类"的概念,因此编译器不需要将关于类本身的信息编码到结果二进制文件中(除了`std :: type_info`所暴露的信息之外). (3认同)
  • @jweyrich:是的,有合法的反射用法(即JUnit/NUnit),但绝大多数时候我看到人们使用它,他们用它来制作"字符串式"的API,这是一个首先要做的可怕的事情.需要这样的东西表明你所拥有的类型并没有很好的设计.这使代码难以选择正确的类型进行实例化,这会导致这些依赖于反射. (3认同)

use*_*379 5

C和C++都不允许您直接使用类型.要做你想建议的事情,你需要查看模板,虽然你可能无法做到你想要的那种类型,但你可能会变得相当接近.

// template <typename T, typename T2>
// Selector* createSelector(const char* name)
Selector *mySelector = createSelector<int,char>("myMethod");
Run Code Online (Sandbox Code Playgroud)