What are variadic functions (va_list) in C?

  Рет қаралды 20,340

CodeVault

CodeVault

Күн бұрын

Source code can be found here:
code-vault.net/lesson/cc1b934...
===== Support us through our store =====
code-vault.net/shop
===== Check out our website =====
code-vault.net
===== Check out our Discord server =====
discord.code-vault.net

Пікірлер: 37
@peyop5262
@peyop5262 Жыл бұрын
I've used it to write a generic "err_exit" function, which basically takes a return error int as first parameter, then as much strings as needed. For example 'err_exit(1, "", SDL_GetError(), NULL);' It makes my code cleaner (exit program in a single line and customized error message) and it's really helpful when a project gets big. As you've mentioned, here the NULL last arg isn't a problem since variadic args are strings. Very handy C functionality if you treat it carefully. Thank you for your amazing videos
@kookts8491
@kookts8491 9 ай бұрын
The last one in the playlist🎉🥳 Thank you so much!!!
@AlluAdarsh
@AlluAdarsh Жыл бұрын
Informative. Thank you!
@anilthapa6290
@anilthapa6290 11 ай бұрын
Hi very good explanation of the topic. Learned so much from your channel.
@mustaphaboudrik5390
@mustaphaboudrik5390 10 ай бұрын
Thanks a lot for the Explanation
@user-mo6vz5mg3t
@user-mo6vz5mg3t 8 ай бұрын
lol the adds started exactly at the moment when he tried to compile with 10 iterations instead of 4 at 9:24 This was an undefined behaviour indeed
@akpevwepraise4208
@akpevwepraise4208 8 ай бұрын
the most perfect explanation sofar
@yrds96
@yrds96 7 ай бұрын
Great video I didn't knew about the NULL technique
@riemann4151
@riemann4151 10 ай бұрын
best channel on C.
@dimitrioskalfakis
@dimitrioskalfakis Жыл бұрын
tricky. good effort.
@189Blake
@189Blake 11 ай бұрын
The C23 new syntax seems very useful, could you do a blog post or a follow up explaining that? Just a video idea
@CodeVault
@CodeVault 11 ай бұрын
Thanks for the suggestion. I will look into it
@Notthetylor
@Notthetylor Жыл бұрын
I'd like to have a mentor like u!!
@nayyerabbas7174
@nayyerabbas7174 Жыл бұрын
Very informative. Can you make a video on opaque pointer in c.
@CodeVault
@CodeVault Жыл бұрын
I will look into it
@bjornnordquist1616
@bjornnordquist1616 Жыл бұрын
Hi! Interesting video. You have been asking for content ideas in the past, so maybe there is something for you in here: there appears to be almost no content about testing in C. Or maybe it is just really hard to dig up for me. I barely know where to start, especially since all content send to focus on C++ and Visual Studio appears to have a dislike for C in general. Also, maybe how far can we emulate object oriented programming or functional programming in C? And in the same direction procedural programing with C. Either way I'll keep watching these C videos until I move on. Thanks a lot!
@CodeVault
@CodeVault Жыл бұрын
Thanks for the suggestions. I have dabbled in automated testing but not in C specifically (I'll have to do some research). And regarding emulating OOP in C... it was always in my mind since it's a great way of learning the basics of OOP and how it's a paradigm that can be used in almost any language
@julietagoldbaum332
@julietagoldbaum332 Жыл бұрын
Excelent video!!. congrats from Argentina!!. What is it argument promotion in variadic functions?
@CodeVault
@CodeVault Жыл бұрын
That is quite a complex topic which I will cover in a video. The basic idea is that parameters for variadic functions are treated as certain data types by default
@XAENDER196
@XAENDER196 Жыл бұрын
Hi! Is it possible to pass char array to parameters? i mean, can they be as variadic arguments?
@CodeVault
@CodeVault Жыл бұрын
You can pass any type of variables you want to va_list
@fifaham
@fifaham 7 ай бұрын
Having 0 in the list while using the NULL method could be troublesome for embedded design - the hardware may not behave well or the robot arm may grab the wrong object.
@vilijanac
@vilijanac Жыл бұрын
Is it possible to pass an int array instead sum({1,2,3}), where you have int sum(int args[]){...int count = sizeof(args);...} I forgot about this.
@CodeVault
@CodeVault Жыл бұрын
In other languages it might be possible. In C you have to first declare and initialize an array before you pass it to the function
@vilijanac
@vilijanac Жыл бұрын
@@CodeVault ok, thx, reason also for va_list implementation and passing count. It is better then testing for NULL.
@shenghongzhong
@shenghongzhong 5 ай бұрын
Did we know which video he referred to was about not using the null terminator and the number of elements?
@CodeVault
@CodeVault 5 ай бұрын
There's no video about that. I recommended this as a homework, but I can help with that if you need it
@ryanboudwin541
@ryanboudwin541 8 ай бұрын
Why not pass argc from your main into the function instead of a separate int count?
@CodeVault
@CodeVault 7 ай бұрын
The argc value is the number of parameters passed to the executable
@dr-Jonas-Birch
@dr-Jonas-Birch Ай бұрын
As you all know, my channel also does similar C language content (although focusing on advanced C features). My question is, do all your 15 000 subscribers come for the C content, or just a tiny fraction where the rest are here for webdev stuff. Any tips on how to reach 😊them? JB
@CodeVault
@CodeVault Ай бұрын
99% of my viewers are from the C content. I had little to no success with the webdev videos (but I might give it a shot later on). Here's my advice: - Keep things simple and short. Understand that the viewers' time is precious for the viewer (nobody wants to waste their time watching a 40 mins video). - Most of my views are from searches on some very niche questions. Try researching about topics like these. For example, I noticed you have a Tor-related video that did well. Maybe more videos on that topic could be a good idea. Don't focus too much on generic topics (at least not in the beginning). - Explain basic concepts when needed. This goes a bit against the first point but I find that many people don't understand certain concepts because they are missing some of the more basic ones related to that topic. Quickly going over some of the basics is, a lot of the times, needed. - Rewatch your videos and find ways to improve them. For example: always speed up large portions where you're just typing code or waiting for some process to finish. You could also speed up your voice a little if you feel that is still legible (many people already do that using the KZfaq player anyway). Thanks for stopping by, wish you good luck!
@zyghom
@zyghom Жыл бұрын
nice, so how come printf does not need count? ok, that is the homework ;-)
@CodeVault
@CodeVault Жыл бұрын
Exactly. Hint: It might have to do with those pesky %d and %s you need to specify to printf
@belayoub6055
@belayoub6055 11 ай бұрын
@@CodeVault well you need to count how many % that specify the format no ?
@CodeVault
@CodeVault 11 ай бұрын
@@belayoub6055 Exactly
@rotemlv
@rotemlv Жыл бұрын
I wouldn't recommend using the last trick you showed, as the code will return bad results on some inputs (0s spell trouble when comparing to NULL). Try this main on your code: int main() { printf("A list of stuff: %d ", sum(1,2,3,4,5,6,0,999, NULL)); return 0; } You will get the expected (by me) 21, and ignore the 999. Yeah, one might say this is an edge case, but I wouldn't.
@CodeVault
@CodeVault Жыл бұрын
I fully agree. That's what I warned people about in the video. It works well if you pass strings (or other pointer types) for example
Let's build a mini printf function
45:46
Oceano
Рет қаралды 22 М.
Самое Романтичное Видео ❤️
00:16
Глеб Рандалайнен
Рет қаралды 3,8 МЛН
Пробую самое сладкое вещество во Вселенной
00:41
Why are function pointers useful?
6:43
CodeVault
Рет қаралды 29 М.
Function-like Macros | C Programming Tutorial
24:12
Portfolio Courses
Рет қаралды 18 М.
the cleanest feature in C that you've probably never heard of
8:13
Low Level Learning
Рет қаралды 129 М.
why do void* pointers even exist?
8:17
Low Level Learning
Рет қаралды 334 М.
Measure execution time in C (for Linux and Windows)
23:04
CodeVault
Рет қаралды 10 М.
Sharing functions between files in C
9:00
CodeVault
Рет қаралды 28 М.
Declaration vs. Definition of functions in C
11:17
CodeVault
Рет қаралды 4,1 М.
Самое Романтичное Видео ❤️
00:16
Глеб Рандалайнен
Рет қаралды 3,8 МЛН