←back to thread

271 points mithcs | 7 comments | | HN request time: 0.025s | source | bottom
1. fuhsnn ◴[] No.45953265[source]
> C23 gave us [[cleanup]] attributes

C23 didn't introduce it, it's still a GCC extension that needs to be spelled as [[gnu::cleanup()]] https://godbolt.org/z/Gsz9hs7TE

replies(1): >>45953601 #
2. cassepipe ◴[] No.45953601[source]
It is surprisingly hard to find information about it, do you have any ? From what I can guess it's a new syntax but it's the feature itself is still an extension ?
replies(4): >>45953886 #>>45954031 #>>45954617 #>>45966700 #
3. SAI_Peregrinus ◴[] No.45953886[source]
The `[[attribute]]` syntax is new, the builtin ones in C23 are `[[deprecated]]`, `[[fallthrough]]`, `[[maybe_unused]]`, `[[nodiscard]]`, `[[noreturn]]`, `[[reproducible]]`, and `[[unsequenced]]`.
4. ksherlock ◴[] No.45954031[source]
[[ ]] attributes were added in C++11 and later C23. There are 7 standard(C32) attributes but GCC has hundreds of them.

https://en.cppreference.com/w/c/language/attributes.html

https://en.cppreference.com/w/cpp/language/attributes.html

https://gcc.gnu.org/onlinedocs/gcc/Attributes.html

https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attribute...

replies(1): >>45957206 #
5. kccqzy ◴[] No.45954617[source]
The feature itself is probably still __attribute__((cleanup(f))). That’s documented at https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attribute...
6. fuhsnn ◴[] No.45957206{3}[source]
Also clang's https://clang.llvm.org/docs/AttributeReference.html
7. crosser ◴[] No.45966700[source]
C standard _may_ eventually have a feature semantically equivalent, but very different syntactically:

https://thephd.dev/_vendor/future_cxx/technical%20specificat...

Discussion:

https://thephd.dev/_vendor/future_cxx/papers/C%20-%20Improve...