Question: Very straight-forward, so the question is why 

```
(function(){ console.log('a'); }()); // 'a'

```

or

```
(function(){ console.log('a'); })(); // 'a'

```

work, but

```
function(){ console.log('a'); }() // SyntaxError: Unexpected token (

```

gives an error? What's the meaning behind this behavior? Or what's the purpose of those extra parentheses?

Answer: 
The second argument of `fread` is the size of each item to be read, in this case the `struct`. I don't understand how you would expect the offset to go there – it should be something like `sizeof(mystruct)`.

**Edit**: Now that the question has been edited, the reason why the two pieces of code produce different results is simply that the first one seeks the position of `fp` to `offset` before reading and the second one doesn't. `fread` reads `sizeof(struct mystruct_thing)` bytes *starting from the current position* of `fp`, so the starting position differs (assuming `offset` is not the same position at which you are already at before `fseek`) because `fseek` sets the position *for future reads* (and writes).
The first fragment will read a struct from `offset` bytes into the file, the second fragment will read it from the current file position - if the file has just been opened, that will be zero.

The obvious explanation perhaps is that `offset` is not equal to zero.