amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > parse error before "int" [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

11.11.2005, 12:36 Uhr

Micha1701
Posts: 938
Nutzer
Hallo!

Ich werd gleich irre... ;-)

Ich versuche ein kleines Programm (nur ANSI C) durch den GNU-C compiler zu jagen. Aber er mag nicht. Gibt mir ständig die Fehlermeldung "parse error before 'int'". Und zwar für die Zeile "int main(void)" und "int isascii(int num)".

Keine Ahnung was der da von mir will. StormCV3 und VBCC machen dabei keine Probleme...

hier mal der Code:

code:
#include <ctype.h>
#include <stdio.h>
#include <string.h>

#define BAD     -1
#define DECODE64(c)  (isascii(c) ? base64val[c] : BAD)

static const char base64digits[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
static const char base64val[] =
    	{
		BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,
		BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,
		BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD,BAD, 62,BAD,BAD,BAD, 63,
		 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,BAD,BAD,BAD,BAD,BAD,BAD,
		BAD,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
		 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,BAD,BAD,BAD,BAD,BAD,
		BAD, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
		 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,BAD,BAD,BAD,BAD,BAD
		};

int isascii(int num);
void to64frombits(unsigned char *out, const unsigned char *in, int inlen);
int from64tobits(char *out, const char *in);

int main(void)
{
	char buffer[100];
	char buffer2[100];
	char teststring[] = "test123";
	int i;
	printf("Decodiere String: %sn", teststring);
	to64frombits(buffer, teststring, strlen(teststring));
	printf("base64 String: %snund zurückn", buffer);
	i = from64tobits(buffer2, buffer);
	buffer2[i] = 0;
	printf("alter String: %sn", buffer2);

    return 0;
}

void to64frombits(unsigned char *out, const unsigned char *in, int inlen)
{
    unsigned char fragment;
	
    for (; inlen >= 3; inlen -= 3)
	{
		*out++ = base64digits[in[0] >> 2];
		*out++ = base64digits[((in[0] << 4) & 0x30) | (in[1] >> 4)];
		*out++ = base64digits[((in[1] << 2) & 0x3c) | (in[2] >> 6)];
		*out++ = base64digits[in[2] & 0x3f];
		in += 3;
	}

	if (inlen > 0)
	{
		*out++ = base64digits[in[0] >> 2];
		fragment = (in[0] << 4) & 0x30;

        if (inlen > 1)
			fragment |= in[1] >> 4;

        *out++ = base64digits[fragment];
        *out++ = (inlen < 2) ? '=' : base64digits[(in[1] << 2) & 0x3c];
        *out++ = '=';
	}
    *out = '';
}

int from64tobits(char *out, const char *in)
{
	int len = 0;
	register unsigned char digit1, digit2, digit3, digit4;

    if (in[0] == '+' && in[1] == ' ')
		in += 2;

    if (*in == 'r')
		return(0);

    do
    {
		digit1 = in[0];
		/*if (DECODE64(digit1) == BAD)  */
		if((isascii(digit1) ? base64val[digit1] : BAD) == BAD)
			return(-1);
		digit2 = in[1];
		/*if (DECODE64(digit2) == BAD)*/
        if((isascii(digit2) ? base64val[digit2] : BAD) == BAD)
			return(-1);
		digit3 = in[2];
		/*if (digit3 != '=' && DECODE64(digit3) == BAD)  */
        if (digit3 != '=' && (isascii(digit3) ? base64val[digit3] : BAD) == BAD)
			return(-1);
		digit4 = in[3];
		/*if (digit4 != '=' && DECODE64(digit4) == BAD)    */
		if(digit3 != '=' && (isascii(digit4) ? base64val[digit4] : BAD) ==BAD)
			return(-1);
		in += 4;
		/**out++ = (DECODE64(digit1) << 2) | (DECODE64(digit2) >> 4);  */
		*out++ = ((isascii(digit1) ? base64val[digit1] : BAD) << 2) |
        		 ((isascii(digit2) ? base64val[digit2] : BAD) >> 4);
        ++len;
		if (digit3 != '=')
		{
			/**out++ = ((DECODE64(digit2) << 4) & 0xf0) | (DECODE64(digit3) >> 2);  */
			*out++ = (((isascii(digit2) ? base64val[digit2] : BAD) << 4) & 0xf0) |
                      ((isascii(digit3) ? base64val[digit3] : BAD) >> 2);
            ++len;
			if (digit4 != '=')
			{
				/**out++ = ((DECODE64(digit3) << 6) & 0xc0) | DECODE64(digit4); */
                *out++ = (((isascii(digit3) ? base64val[digit3] : BAD) << 6) & 0xc0) |
                      	   (isascii(digit4) ? base64val[digit4] : BAD);
				++len;
			}
		}
	} while (*in && *in != 'r' && digit4 != '=');

	return (len);
}

int isascii(int num)
{
	if(num >= 0 && num <= 127)
		return 1;
	else
		return 0;
}


Einer ne Ahnung was der GNU von mir möchte?
--
:boing: Micha :boing:

Look at my HPs:
http://www.Silicon-Wizards.com

http://www.RealmsofPower.de.vu

[ - Antworten - Zitieren - Direktlink - ]

11.11.2005, 12:42 Uhr

Micha1701
Posts: 938
Nutzer
OK, kaum geschrieben, schon gefunden:

vbcc kennt isascii() nicht. Der GNU schon. Und der beschwert sich dann...

Mit nem #ifdef __VBCC__ hab ich das ganze dann behoben...


--
:boing: Micha :boing:

Look at my HPs:
http://www.Silicon-Wizards.com

http://www.RealmsofPower.de.vu

[ - Antworten - Zitieren - Direktlink - ]

11.11.2005, 13:02 Uhr

Holger
Posts: 8116
Nutzer
Ja, ja, die tollen Preprozessor-Makros...
Wann immer total unverständliche Fehlermeldungen einen zur Verzweiflung treiben, lohnt es sich "cpp source-file.c" auszuführen. Dann sieht man, was der Compiler sieht.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > parse error before "int" [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.