加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C 11型扣除与const char *

发布时间:2020-12-16 05:45:00 所属栏目:百科 来源:网络整理
导读:在 GotW 94年,Herb Sutter对“经典C”声明进行了区分 const char* s = "Hello"; 和“现代”风格 auto s = "Hello"; 他告诉我们,“汽车风格更正确”的类型有微妙的差异. [编辑补充:评论表明,这可能不是Sutter实际意义上的公平表示;见下面的讨论. 但…有什么
在 GotW 94年,Herb Sutter对“经典C”声明进行了区分
const char* s = "Hello";

和“现代”风格

auto s = "Hello";

他告诉我们,“汽车风格更正确”的类型有微妙的差异. [编辑补充:评论表明,这可能不是Sutter实际意义上的公平表示;见下面的讨论.

但…有什么区别?我的印象是,一个const char *是正确的方法来引用字符串文字.此外,当我问我的调试器(lldb)时,似乎认为这些类型实际上是一样的:

* thread #1: tid = 0x1756c2,0x0000000100000f8f test`main + 31 at test.cc:4,queue = 'com.apple.main-thread',stop reason = breakpoint 1.1
    frame #0: 0x0000000100000f8f test`main + 31 at test.cc:4
   1    int main(void) {
   2        const char* s = "Hello";
   3        auto t = "Hello";
-> 4        return 0;
   5    }
(lldb) fr v
(const char *) s = 0x0000000100000f91 "Hello"
(const char *) t = 0x0000000100000f91 "Hello"

萨特指的是微妙的区别?

解决方法

你不完全清楚Herb说什么(上下文很重要),但无论如何,类型是一样的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读