是否可以创建没有struct的新类型变量?

时间:2017-07-06 09:42:01

标签: c++ c

这是我得到的,但当我检查类型时,它显示" struct MyVarName"

#include <iostream>
#include <typeinfo>
typedef struct { char text[15];} MyVarName;
int  g = 0;
int main(void) {
    MyVarName a = { "super" };
    std::cout << typeid(a).name() << '\n';
    std::cout << typeid(g).name() << '\n';
return 0;
}

是否可以定义自己的变量类型,然后将其用作任何其他变量?

打印,分配新值..等等。

2 个答案:

答案 0 :(得分:2)

The result of std::type_info::name() is implementation-defined可能是任何东西,包括一个受损的名字,空字符串或烤宽面条的食谱。

例如,GCC gives

9MyVarName
i

显然你的是采用类似C的方法并将其称为struct MyVarName,这是你必须编写的以引用C中的类型。

根本不要依赖它来做这种事情。 C ++不会假装有意义的反射

除此之外,您的代码没有任何问题。您 定义了一个新类型。有一些方法可以引入不需要创建类类型的新类型(即使用structclass),但这些都涉及使用typedef或{{对现有类型进行别名处理1}},因而受到限制。它们不允许您创建类似using的复杂类型。

答案 1 :(得分:0)

在C:

typedef char newtype[20];

void foo(void)
{
    newtype a;
}