Permalänk
Hedersmedlem

(enligt mig) skumt problem i C.

Öh.. Nu fattar jag inte ett skit här.
Försöker fixa ett program som använder malloc.
Här är lite source:

#include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <string.h> /* behövs verkligen alla de där? nåja */ int main(int argc, char **argv) { int i; /* if (argc < 4) { printf ("error: Usage: %s <filename> <line-number> <text to save here>\n", argv[0]); exit(-1); } */ char *line; if ( (line = (char*)malloc(sizeof(char) * 256 * argc)) == NULL ) { printf("error: malloc\n"); exit(-1); }

Det där funkar bra.
DÄREMOT, om jag tar bort kommentarerna runt argc-kollen, så får jag kompileringsfel!

Nu:
jarjar@exscape cpp $ gcc -o parse parse.c
jarjar@exscape cpp $

Om man tar bort:
jarjar@exscape cpp $ gcc -o parse parse.c
parse.c: In function `main':
parse.c:16: parse error before `char'
parse.c:17: `line' undeclared (first use in this function)
parse.c:17: (Each undeclared identifier is reported only once
parse.c:17: for each function it appears in.)

Vet nån varför?
Kör för övrigt GCC 2.95.3 under Linux 2.4.20.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Medlem

Du kan inte deklarera variabler var som helst i koden. Deklarationer i C ska ske först. I C++ kan man deklarera var man vill. Flytta upp deklarationen av line så den hamnar före kollen av argc.

Visa signatur

[ Adopt, Adapt and Apply ]

Permalänk
Hedersmedlem

Ah, så enkelt (men jobbigt!).
Är väldigt van vid C++ så..
Tackar.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200