c-test/src/main.c

149 lines
3.8 KiB
C

#include <stdio.h>
// #include <stdint.h>
#include <inttypes.h>
// My code
#include "math_functions.h"
#include "hello.h"
#include "struct_test.h"
#include "pointer_test.h"
#include "read_file.h"
#include "mysql_test.h"
// Test
// https://stackoverflow.com/questions/8666378/detect-windows-or-linux-in-c-c
#ifdef _WIN32
#include <Windows.h>
#endif
#include "stdbool.h"
// To setup this project on windows
// 1. Install CMake
// 2. Install Ninja with winget in windows 11: "winget install --id=Ninja-build.Ninja -e"
// 3. Make a build directory in this project and cd into it
// 4. Run this CMake command: "cmake -GNinja .."
// 5. Change into Debug/Release folder
// 6. Run this command to build: "cmake --build .. --config Debug"
// https://phoenixnap.com/kb/install-gcc-windows
// https://stackoverflow.com/questions/36770716/mingw64-make-build-error-bash-make-command-not-found
// To build without installing Visual Studio:
// 1. Download MingW64 from here: https://winlibs.com/#download-release
// 2. Place the folder into C:\
// 3. Add this folder to the path: "C:\mingw64\bin"
// 4. Download Make without guile from here: https://sourceforge.net/projects/ezwinports/files/
// 5. Copy files from make into "C:\mingw64", do not replace existing files!
// 6. Create a build folder and cd into it
// 7. Run this CMake command to generate build files: "cmake -G "MinGW Makefiles" .."
// 8. To build Run "make"
// I switched to msys2 and used this guide for the toolkit:
// https://www.devdungeon.com/content/install-gcc-compiler-windows-msys2-cc
// Installed mysql in mingw64 using msys2:
// pacman -S mingw-w64-x86_64-libmariadbclient
// TODO Look into getting current directory in Windows and Linux
// https://stackoverflow.com/questions/27585930/get-the-current-working-directory-in-c-on-windows
// TODO Move this into a different project.
#ifdef _WIN32
void guiTest(){
}
#endif
// #define _FLIP_BOOLS
// Hmm, very evil
#ifdef _FLIP_BOOLS
// This is just madness, inverting the boolean values :P
#define true FALSE
#define false TRUE
// #define true (rand() % 2)
// #define false (rand() % 2)
#endif //_FLIP_BOOLS
// TODO Look into making a gtk C program
// https://www.geeksforgeeks.org/how-to-create-gui-in-c-programming-using-gtk-toolkit/
// Print out the memory addresses for each item in an array.
void array_test() {
// https://www.tutorialspoint.com/cprogramming/c_memory_address.htm
// Int array
int numbers[5] = {1,2,3,4,5};
int i = 0;
printf("numbers = %p\n", numbers);
do {
printf("numbers[%u] = %p\n", i, (void *)&numbers[i]);
i++;
} while (i < 5);
printf("sizeof(numbers) = %lu\n", sizeof(numbers));
}
// Removed from path in windows: C:\mingw64\bin
// https://www.tutorialspoint.com/cprogramming/c_ternary_operator.htm
void check_even_odd(int num) {
(num %2 == 0) ? printf("%d is even\n", num) : printf("%d is odd\n", num);
}
int main() {
char welcomeMsg[] = "Welcome to KCNet";
// printf(welcomeMsg);
uint16_t test = -2;
// array_test();
// for (int i=0; i<5; i++) {
// check_even_odd(i);
// }
// check_even_odd(1);
// print_struct();
// read_file("test.txt");
// This doesn't work
// uint16_test();
//? 65534? Where is that number coming from
// https://stackoverflow.com/questions/29112878/how-do-i-printf-a-uint16-t
// printf("Number: %u", (unsigned int)test);
// https://stackoverflow.com/questions/12120426/how-do-i-print-uint32-t-and-uint16-t-variables-value
// printf("Number: %" PRIu32, test);
// mathFunctions();
// print_struct();
int i = 22222;
int* i_ptr = &i;
// pointer_madness(i_ptr);
connect_mysql();
#ifdef _FLIP_BOOLS
bool testb = false;
if (testb) {
printf("True");
} else {
printf("False");
}
#endif //_FLIP_BOOLS
// printf_example();
return 0;
}