C++中能否修改变量声明方式以支持任意类型变量的直接声明?
C++ 自动类型声明方案
完全可以实现你想要的效果,而且不需要修改C++本身的语法规则,标准就有原生支持。
原生语法实现
C11及更高版本提供的auto关键字,就是专门用来做编译期自动类型推导的,你给出的示例可以直接改写为合法C代码:
int main() { auto x = "Hello World!"; // 自动推导为const char*类型 auto y = 1.2; // 自动推导为double类型 }
核心特性说明
- 推导过程在编译期完成,不会带来任何运行期性能损耗
- 类型安全和手动显式声明完全一致,不会出现动态语言的类型隐式转换隐患
- 可以搭配const、引用、右值引用等修饰符使用,比如
const auto& val = get_object();就能自动推导为常量左值引用类型
完全匹配你示例的declare写法
如果你一定要用declare作为关键字,只需要加一行宏定义即可:
#define declare auto
添加后你示例里的代码只要补全每行末尾的分号,就能直接编译运行,效果和用auto完全一致。
注意:非必要不建议自定义这类语法别名,会增加其他C++开发者的理解成本,直接使用标准
auto是工业界的通用实践。
内容的提问来源于stack exchange,提问作者Joakim Hjalmarsson
相关产品推荐
相关产品推荐

