一个关于C++中类型强制的简单问题

2024-02-10

给定一个函数原型和一个类型定义:

int my_function(unsigned short x);
typedef unsigned short blatherskite;

标准定义了以下情况:

int main(int argc, char** argv) {
  int result;
  blatherskite b;

  b=3;
  result = my_function(b);
}

我是否可以通过函数原型获得类型强制?


如果您的问题实际上是关于参数和参数的类型是否匹配,那么答案是肯定的。typedef不会引入新类型,它只会为现有类型创建别名。多变的b有类型unsigned int,就像参数一样,尽管b使用 typedef-name 声明blatherskite.

不过,你的例子并不能很好地证明这一点。在 C++ 中,所有整型类型都可以相互转换,因此(忽略范围问题)代码将具有定义的行为,即使blatherskite指定不同的类型(新类型)。但事实并非如此。所以这也是完全有效的

void foo(unsigned int* p);
...
blatherskite *pb = 0;
foo(pb); // <- still valid
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个关于C++中类型强制的简单问题 的相关文章

随机推荐