假设Type_a和Type_b两种类型分别是int和long类型的包装器.
联合定义为:
union Type_u { Type_a a; Type_b b;}
现在我有类型Type_a的东西,让我们称之为j(只是让人困惑).我需要将它传递给一个期望Type_u类型的参数的函数:
voID burninate(Type_u peasants);
将此变量j传递给burninate的正确方法是什么? (我遇到了将j转换为Type_u以及按原样传递它的问题.都没有编译.)
值得指出的是,我没有能力修改联合类型(或Type_a或Type_b或者burninate的签名).
解决方法 由于Type_a是第一个元素,您可以像这样初始化一个联合:Type_a j;Type_u u = {j};burninate(u);
如果要传递Type_b类型:
Type_b k;Type_u u;u.b = k;burninate(u);
C和C在这方面有所不同.在C99中,您可以使用指定的初始化程序来初始化不是第一个的元素.
Type_b k;Type_u u = {.b = k};burninate(u);总结
以上是内存溢出为你收集整理的c – 施放到联盟全部内容,希望文章能够帮你解决c – 施放到联盟所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)