James Butler
James Butler

Reputation: 41

Getting error for initializing a structure in C

I am getting an error when trying to compile a C source file that uses a structure. I'm using gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 on Ubuntu 12.04 LTS.

Here is the code:

/* struct.c: Illustrates structures */
#include <stdio.h>
#include <string.h>

struct Hitter {
    char last[16];
    char first[11];
    int home_runs;
};

int main() {
    struct Hitter h1 = {"McGwire", "Mark", 70};
    struct Hitter h2;
    strcpy(h2.last, "Sosa");
    strcpy(h2.first, "Sammy");
    h2.home_runs = h1.home_runs - 4;
    printf("#1 == {%s, %s, %d}\n",
           h1.last, h1.first, h1.home_runs);
    printf("#2 == {%s, %s, %d}\n",
           h2.last, h2.first, h2.home_runs);
    return 0;
}

and here is the error:

$ gcc -o struct struct.c
struct.c: In function `main':
struct.c:12:9: error: parameter `h1' is initialized
struct.c:14:2: error: expected declaration specifiers before `strcpy'
struct.c:15:2: error: expected declaration specifiers before `strcpy'
struct.c:16:2: error: expected declaration specifiers before `h2'
struct.c:18:2: error: expected declaration specifiers before `printf'
struct.c:21:2: error: expected declaration specifiers before `printf'
struct.c:23:2: error: expected declaration specifiers before `return'
struct.c:24:1: error: expected declaration specifiers before `}' token
struct.c:13:16: error: declaration for parameter `h2' but no such parameter
struct.c:12:16: error: declaration for parameter `h1' but no such parameter
struct.c:24:1: error: expected `{' at end of input

The above code is from the CD training course "Thinking in C" by Chuck Allison. I know that is a very old CD and I am sure the syntax of the structure must have changed, but I have no idea what it may be now. Your help is appreciated. Thanks

Upvotes: 0

Views: 3941

Answers (1)

Maksim Skurydzin
Maksim Skurydzin

Reputation: 10541

Once I've had a similar case and it turned out the file I was trying to compile had incorrect line endings. For example, your file taken from disk might have CR + LF as end of line, while only LF is expected. This can be discovered by turning an option to show invisible characters in most of text editors.

Upvotes: 1

Related Questions