题
给定功能原型和类型定义:
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
.
不隶属于 StackOverflow