snippet main main() function
	int main(int argc, const char *argv[]) {
		${0:/*statements*/}
		return 0;
	}

snippet mainv main() function that accepts no parameters
	int main(void) {
		${0:/*statements*/}
		return 0;
	}

snippet while while loop
	while (${1:/*condition*/}) {
		${0:/*statements*/}
	}

snippet do_while do...while loop
	do {
		${0:/*statements*/}
	} (${1:/*condition*/})

snippet for for loop
	for(${1:/*initialization*/}; ${2:/*condition*/}; ${3:/*increment/decrement*/}) {
		${0:/*statements*/}
	}

snippet fori for loop using index
	for(int ${1:i} = 0; ${1:i} ${2:< 10}; ${1:i}++) {
		${0:/*statements*/}
	}

snippet if if statement
	if (${1:/*condition*/}) {
		${0:/*statements*/}
	}

snippet elseif else if statement
	else if (${1:/*condition*/}) {
		${0:/*statements*/}
	}

snippet else else statement
	else {
		${0:/*statements*/}
	}

snippet ifelse if...else statement
	if (${1:/*condition*/}) {
		${2:/*statements*/}
	} else {
		${3:/*statements*/}
	}

snippet switch switch statement
	switch (${1:/*variable*/}) {
		case ${2:/*variable case*/}:
			${3:/*statements*/}
			${4:break;}${5}
		default:
			${6}
	}

snippet function_definition function definition
	${1:void} ${2:func_name}(${3:void}) {
			${0:/*statements*/}
	}

snippet function_declaration function declaration
	${1:void} ${2:func_name}(${3:void});

snippet ternary ternary
	(${1:/*condition*/}) ? ${2:/*expression true*/} : ${3:/*expression false*/}

snippet return return
	return ${0:${VISUAL}};

snippet header header guards
	#ifndef ${1:HEADER_H}
	#define ${1:HEADER_H}
	
	${0:/* contents */}
	
	#endif