给定功能原型和类型定义:

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

其他提示

不需要类型的胁迫。 TypEdef只是相同类型的别名,因此您正在通过 unsigned short 到一个采用一个功能 unsigned short.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top