Image

Imagedarkk wrote in Imageru_cpp

Category:

Понятие о пустоте на стыке миров

Приветствую.

Вопрос в том, есть ли типы с sizeof() == 0

$ cat test.c
#include <stdio.h>
int main(int argc, char **argv) {
        struct { } foo;
        printf("sizeof(foo): %u\n", sizeof(foo));
        return 0;
}
$ gcc -Wall test.c -o test
$ g++ -Wall test.c -o test++
$ ./test
sizeof(foo): 0
$ ./test++
sizeof(foo): 1

версия gcc - 4.0.3

Потребовалось мне такое извращение для чего-то типа
struct foobar {
  int data;
  struct { } payload;
};

т.е. чтобы получать указатель на кусок памяти за концом структуры как &_foobar.payload а не ((char*)&_foobar+sizeof(_foobar)) читаемости для.
Или лучше наплевать на читаемость и использовать (&foobar+1), чтобы оно не аукнулось в других версиях компилятора?