Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

Activity for Lundin‭

Type On... Excerpt Status Date
Comment Post #287122 One of the most important things I was taught in physics classes back at school was to _always_ convert each operand to the basic SI unit before using it in calculations. That is, always convert km to m. Always convert hours/minutes to seconds. And so on. This for manual calculations - programming is...
(more)
over 1 year ago
Edit Post #287079 Post edited:
over 1 year ago
Edit Post #287079 Post edited:
over 1 year ago
Edit Post #287079 Post edited:
over 1 year ago
Edit Post #287079 Post edited:
over 1 year ago
Edit Post #287079 Initial revision over 1 year ago
Answer A: C naming convention, module trigrams?
For what it's worth, I have some 20 years of experience designing embedded C systems, with large and small code bases both. Code design is some of the hardest things to do, since books about object orientation (OO) etc only gets you so far - you have to learn what works out of experience. Generall...
(more)
over 1 year ago
Comment Post #286979 The volatile part doesn't make it UB because of the lvalue access alone, but because of the special rule in 6.3.2.1 which has nothing to do with the value of the variable or traps, but code generation.
(more)
over 1 year ago
Comment Post #286975 @#53398 For the most part it _is_ fine to use such a variable, as in it won't cause you program to crash and burn (not undefined behavior), but it will not produce anything meaningful or deterministic either (it is unspecified behavior). With the exception of trap representations, which are mostly ir...
(more)
over 1 year ago
Edit Post #286987 Post edited:
over 1 year ago
Comment Post #286979 "we can even read an uninitialized variable with unspecified value safely" This is an over-simplification. Reading a local variable (automatic storage) which was not initialized and never had its address taken (could have been declared with `register` storage class) is explicitly UB as per C17 6.3.2....
(more)
over 1 year ago
Edit Post #286987 Initial revision over 1 year ago
Answer A: Cast uninitialized variable to (void)
It depends. This boils down to whether or not the expression cast to `void` contains any side effects, such as accessing a `volatile`-qualified object or modifying any object. C17 6.3.2.2: > If an expression of any other type is evaluated as a void expression, its value or designator is discar...
(more)
over 1 year ago
Edit Post #286947 Initial revision over 1 year ago
Answer A: Asking and answering FAQ style questions
Yes it is fine and probably encouraged even. I have written several self-answered Q&A here and they were mostly well-received. They aren't all that easy to write though, especially getting the question right and meaningful, so that people looking for that same problem can find it - or at least so tha...
(more)
over 1 year ago
Edit Post #283890 Post edited:
over 1 year ago
Comment Post #286813 I assume you meant to write data-presentation but it is missing from the question.
(more)
over 1 year ago
Edit Post #286870 Initial revision over 1 year ago
Answer A: Renaming GNU/Linux tag to gnu
I don't think GNU can be used as a stand-alone tag. Apart from the OS, GNU is also a tool collection of various programs, many used for programming, making is a very ambiguous tag which can't stand on its own. Any use of the tag needs to also specify what it's actually about: the OS or one of the ...
(more)
over 1 year ago
Comment Post #286628 Ok, well... conditional compilation is always messy. I would consider solving this through version control and program design instead. As in, include a foo.h with the common interface, then link either A_foo.c or B_foo.c depending on version.
(more)
almost 2 years ago
Comment Post #286628 Not entirely sure what problem you are trying to solve, but is there any reason why you can't do `if (e) { _Static_assert(!e,"Called but not in binary."); } \` instead, something like that? To get a readable compile-time error instead of a mysterious link-time one?
(more)
almost 2 years ago
Edit Post #286593 Post edited:
almost 2 years ago
Edit Post #286593 Initial revision almost 2 years ago
Answer A: How to write a macro that discards the const qualifier, for any type?
Ignoring the numerous forms of undefined behavior that casting away `const` might invoke, the blunt but simple and standard solution is just to cast to `(void)`. ```c char foo (const char str) { return (void)str; } ``` This is far more portable than gcc extensions like `typeof`. ...
(more)
almost 2 years ago
Comment Post #286575 @#53937 There are various tricks involving union type punning where the union members are pointers of different qualifiers. But that mostly relies on the C rules of effective type being underspecified in regards of type qualifiers, so I'm not sure if anyone could tell if it would be well-defined or n...
(more)
almost 2 years ago
Comment Post #286578 There's nothing in the C standard mentioning linking, so how and when these get linked is highly system-specific. On the average embedded system for example, each example will end up in true read-only memory at link-time.
(more)
almost 2 years ago
Comment Post #286575 Most of the time, you don't want to discard const qualifiers since that invokes undefined behavior in many cases. The appropriate solution is either to do a copy of the value or to reconsider your design.
(more)
almost 2 years ago
Comment Post #286440 @#36396 PID in the context of desktop/system programming means process identity. The less common meaning of it would be Proportional-Integral-Derivative controller. That's the two industry de facto standard meanings of the term - any other meaning isn't well established. In the context of Unix progra...
(more)
almost 2 years ago
Comment Post #286372 The operator precedence will be the same as in basic math... so it's not even a programming problem.
(more)
about 2 years ago
Comment Post #285999 @#56561 This is about the code review category of this site so it doesn't apply.
(more)
about 2 years ago
Comment Post #283440 @#36396 If you are lucky then yes. With gcc you have to do `-Wall` to enable the warning for example.
(more)
about 2 years ago
Edit Post #283441 Post edited:
about 2 years ago
Comment Post #286189 Btw I'm not saying that it shouldn't be used, I'm saying that it should be used with caution. It's an incredibly flawed function. At a minimum use a compiler which investigates the format string. Or perhaps generate the format string through some type safe interface like `_Generic` macros.
(more)
about 2 years ago
Comment Post #286189 @#8196 That would involve using OS-specific API though. Or in case of embedded systems, rolling out some UART or display driver manually. There's no universal replacement. Though console I/O is mostly a thing of the past, most people stopped using it around year 2000. (Programs with or without GUI ca...
(more)
about 2 years ago
Comment Post #285813 @#56533 No, in the first case you pass the array object and in the second case the function. As per various rules of parameter decay, the compiler will implicitly adjust them to pointers. Just as for example Java will implicitly adjust an object passed as parameter to a reference - same thing.
(more)
about 2 years ago
Comment Post #286191 In either of these scenarios, the correct place to check against null is _always_ where you have valid reasons to suspect it to get set to null (after a malloc call?) and only there. It is _never_ the correct place to check inside the completely unrelated library function `func` which has the purpose...
(more)
about 2 years ago
Comment Post #286191 @#8196 It isn't, it is the very same thing. This code `int* someptr = ...; /*...*/ if(!someptr) { ... } func(someptr); /*...*/ void func (int* someptr) { if(!someptr) { ...}` boils down to the very same thing as `int* someptr = ...; /*...*/ if(!someptr) { ... } /*some rows of unrelated code*/ if(!som...
(more)
about 2 years ago
Comment Post #286191 @#8196 So every 10th line or so we should check if all pointers in the current scope are null? Because that makes as much sense.
(more)
about 2 years ago
Comment Post #286191 Checking if you have the key before starting your car is perfectly reasonable. Checking if the car still has an engine, wheels and exhaust each time before starting it is not. What is one's reason for doing so, is there a notorious car part thief in the neighbourhood (valid reason) or is it "one cann...
(more)
about 2 years ago
Comment Post #286191 @#8196 Everyone is missing the point that checking for null _inside_ some generic function is always the wrong _place_. Checking for null elsewhere is perfectly reasonable and I never said otherwise. Unfortunately it would seem that the average reader here is of the PC programmer variety who has neve...
(more)
about 2 years ago
Comment Post #286189 @#36396 Looking them up is just a [man](https://linux.die.net/man/) away though. Some of these are rarely ever used even by C veterans. I don't think I've ever used `tmpfile` or `ungetc`, `signal()` is pretty much never used outside *nix systems and so on.
(more)
about 2 years ago
Edit Post #286195 Initial revision about 2 years ago
Answer A: How can we grow this community?
By having decent source code formatting that isn't completely inferior to other sites like Stack Overflow. We might want to post/view snippets longer than 13 lines without suffering some scroll wheel. See my feature request here. My first impression when coming to any Codidact site requiring sour...
(more)
about 2 years ago
Comment Post #286189 @#36396 "Family of functions" means that there is `atoi` and `atof` and `atod` etc, a bunch of very similar functions with slight differences when it comes to types/parameters. And there's a corresponding more suitable family of `strtol`, `strtof`, `strtod` and so on. Similarly there is `printf`, `f...
(more)
about 2 years ago
Comment Post #286193 "Defensive programming", as in applying numerous error checks even in cases that theoretically shouldn't fail, might be a good idea. However, such error checks should be located near the place where one might suspect that the error appears (user input, buffer copying etc), and not in some unrelated l...
(more)
about 2 years ago
Comment Post #286191 @#8153 Ah yeah, silly little bug. It's been fixed, thanks.
(more)
about 2 years ago
Edit Post #286191 Post edited:
Fixed a bug
about 2 years ago
Comment Post #286191 @#53305 So now I'm not only waiting for you to explain how a C function should do bounds checking of its array parameter, I'm also waiting for you to explain exactly how `memmove_s` checks it's parameters against null, contrary to the run-time constraints in K 3.7.1.2 I just quoted. Or we could just ...
(more)
about 2 years ago
Comment Post #286191 @#53305 It's not "whatever", you criticise my post and down vote it with the and claim that functions should do bounds checking, which I still don't know what it has to do with null checking. I'm happy to get _constructive_ criticism but this isn't it. As for the optional annex K bounds checking inte...
(more)
about 2 years ago
Comment Post #286191 @#53305 How is that even related? Also I don't understand what you are talking about: either a function gets an array size passed, in which case the caller has to get it right, or it doesn't get an array sized passed, in which case no can do. Either way, a function in C cannot do meaningful bounds-ch...
(more)
about 2 years ago