给定一个函数原型和一个类型定义:
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(使用前将#替换为@)