I have a simple C program that I can compile via command line on Linux easily enough but want to use Visual Studio to debug the program so that I can more easily see what it’s doing but I cannot get it to compile.
I have created a new cpp Win32 console application. Added my .c and .h file but I cannot get it to compile. I get 100+ errors that primarily seem to be red herrings. For instance I have an error saying a variable isn’t declared when I can see it declared on the line immediately before. For instance:
int i;
for (i = 0; i < unpacked_length; i++)
{
on the “for” line I get an error: “error C2065: ‘i’ : undeclared identifier”
So something else is obviously going on. One error that seems legit is this one:
static unsigned char* Base64_Charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
IntelliSense: a value of type “const char *” cannot be used to initialize an entity of type “unsigned char *”
Since this works when compiling via command line I don’t know why the intellisense would be giving this error here unless this compiler has different rules than the other one I used via command line. I haven’t done any C for about 15 years and don’t know if this could be a difference in compiler or if there is something else going on here.
The only includes in the source are:
#include "dtcrypt.h"
#include <string.h>
#include <stdlib.h>
Appreciate any help!
Visual Studio 2010 only supports ANSI C (aka C89), it does not support the more modern C99 or C11 language standards. ANSI C requires you to declare all of your variables at the top of a function, you cannot define them in the middle of a function just before they are used. So try rewriting your code like this:
For the second error, Intellisense complaining that it can’t convert a pointer to
const charto a pointer toconst unsigned char. String literals have typechar[](array of characters), andcharis signed by default. So, you should declare your variable as typeconst char *instead ofconst unsigned char *. Or, you can ignore it, since it’s not a compiler error, but it is a warning at certain warning levels.