【发布时间】:2015-03-09 08:04:00
【问题描述】:
编译为“C”与编译为“C++”之间存在以下差异
struct A {
int x;
int y;
};
struct A get() {
return {0};
}
当编译为“C++”时一切正常。 但是,当编译为“C”时;我得到了:
错误:预期的表达式
我可以通过这样做来解决:
return (struct A){0};
但是,我想知道差异来自哪里。语言中的任何一点都可以参考这种差异的来源吗?
【问题讨论】:
-
我认为 c++ 编译器会自动将返回值转换为
struct A。在 c=+ 中,您不需要struct A get()只需A get() -
您是否在 C++ 11 之前使用 C++ 编译器之前尝试过? Pretty sure it pukes there too.
-
不知何故,我认为这与c++11中引入的自动返回类型推导直接相关。
-
我认为 this link 可能会有所帮助。给定链接的段落后半部分(以“标量类型的复合文字”开头)回答了您的问题。
-
你不知道C和C++是两种独立的语言吗?您不妨尝试将其编译为 PHP,然后询问是什么机制导致执行失败。完全是愚蠢的!
标签: c++ c compiler-errors type-conversion