5 ms·
I never really had a good grasp of C. Why is this code novel? It looks like importing a function in any language.
by agent281 4y ago
I never really had a good grasp of C. Why is this code novel? It looks like importing a function in any language.
- phaer 4y agoIt's including another C file, normally you'd just include a "header file" in C and compile each C file separately.
- usrn 4y agoFor those who don't use C: header files are more or less an interface description and (usually) don't include any code. The code is added from external objects during the second "linking" step.
- agent281 4y agoOh, I see: including a header file injects forward declarations into the calling file. Each c file gets compiled separately into object code unless you directly import them like the code above is doing. In that case it essentially dumps the full text of the file into the calling file, which causes serial compilation of a single object file. Unless I'm mistaken that clears some stuff up for me. Thank you!
- phaer 4y agoThat's my understanding as well, so I think you are correct but I am no C wizard myself :)
- arinlen 4y ago> I never really had a good grasp of C. Why is this code novel? It looks like importing a function in any language. Unity builds are a very old and widely established concept. I dare to speculate they are older than the regular header and source file split, as C required a full blown preprocessor to split code in separate files and also someone had to come up with the include guard trick to get around the limitations of including the same definition multiple times. They aren't employed that often because there are some tradeoffs and in large projects it's benefitial to split them in smaller translation units to limit the scope of incremental builds.