- 主题:c++太垃圾
不是强制,而是warning,多好,正经点的team都会看warning的吧
而且可以选择将warning视为error
【 在 mrunmatched 的大作中提到: 】
: 明明编译都检查出数组越界了,愣是只报warning,还允许编译通过,是怎么想的?给黑客留后门?
: 不怪很多大公司呼吁用内存安全语言替换他,再不思进取,过几年就被淘汰了。
: 发自「今日水木 on HMA-AL00」
--
FROM 222.131.205.*
char[0]或者char[1]是很常见的技法,这是C带来的,C++继承了而已。
这是C/C++的“direct hardware mapping”这个语言特性决定的,bit fields、alignment、pack这几个feature也是。
【 在 HerSMTH 的大作中提到: 】
: 为啥定义char[0]数组啊?定义个char*指针不香?
:
:
--
FROM 222.131.205.*
不算奇技淫巧,用的人很多。
之所以好用,就是因为它能把一段变长的二进制数据解释为对应的逻辑结构/视图。
这可以认为是C/C++这种接近硬件的语言特有的技巧。别的语言实现起来就比较啰嗦。
linux里的inotify_event之类的结构也也有用。不过现在标准的写法是char[],不是char[0]、char[1]
https://github.com/torvalds/linux/blob/master/include/uapi/linux/inotify.h
反过来说,一个没用的东西,编译器不会对它特殊处理,标准也不会专门给它定条规范
【 在 HerSMTH 的大作中提到: 】
: 感觉这些奇技淫巧还是应该放弃
: 用其它的方式一样可以实现目的,执行效率没差别,还有助于阅读,缺点只是多几行代码而已
:
: ...................
--
修改:z16166 FROM 222.131.205.*
FROM 222.131.205.*
C99的术语是Flexible array member,而且写法是char x[],中括号里不能有东西。
https://developers.redhat.com/articles/2022/09/29/benefits-limitations-flexible-array-members#flexible_array_members_vs__pointer_implementation
【 在 easior 的大作中提到: 】
: 记得原先这个是 GNU C 的扩展!
: 变长数组应该不是标准 C 吧?
--
FROM 222.131.205.*
没看明白。constexpr void *咋搞?
【 在 ziqin 的大作中提到: 】
: 其实就是一个地址常量吧
: 现在可以用constexpr void* 代替了吧,更直观一些
:
--
FROM 222.131.205.*
靠近底层的高级语言,其实并不适合新手用,因为自由度很大,如果用自己没有精确掌握的东西,就进坑了。
新手适合python、js、java这种
【 在 jjfz 的大作中提到: 】
: 楼主的问题在于C++并不认为它是个缺陷
: 这玩意我在底层数据设计里还是常用的
: 比如根据模型,存储的数据可能是double [2],或者4,或者8
: ...................
--
FROM 222.131.205.*
C/C++都多少年了啊,比不少80后还早,问题肯定是不少的,站在时代的角度看吧。
【 在 mrunmatched 的大作中提到: 】
: 是啊,就这样还有很多自以为很懂c++的人傲慢的觉得语言设计没问题,是程序员不会用,把责任全推给程序员。
: 发自「今日水木 on HMA-AL00」
--
FROM 222.131.205.*