于 2011年12月20日 18:13, Stefan Hajnoczi 写道:
On Tue, Dec 20, 2011 at 05:03:47PM +0800, Dong Xu Wang wrote:
From: Dong Xu Wang<wdon...@linux.vnet.ibm.com>

On some platforms, __LINE__ will not expand to real number in QEMU_BUILD_BUG_ON,
so if using QEMU_BUILD_BUG_ON twice, compiler will report errors. This patch 
will
fix it.

BTW, I got error message on RHEL 6.1/gcc 4.4.5.

Can you post the gcc -E output of the file that produces the error as
well as the gcc error output?

Stefan



I doubled the following lines in block/qcow2-snapshot.c(line 211 and 212):

QEMU_BUILD_BUG_ON(offsetof(QCowHeader, snapshots_offset) !=
offsetof(QCowHeader, nb_snapshots) + sizeof(header_data.nb_snapshots));"


While "gcc -E -C -I. block/qcow2-snapshot.c", I can get:
typedef char
 qemu_build_bug_on____LINE__
# 241 "block/qcow2-snapshot.c"
[(__builtin_offsetof (QCowHeader, snapshots_offset) != __builtin_offsetof (QCowHeader, nb_snapshots) + sizeof(header_data.nb_snapshots))?-1:1];

       ;
  typedef char
 qemu_build_bug_on____LINE__
# 243 "block/qcow2-snapshot.c"
[(__builtin_offsetof (QCowHeader, snapshots_offset) != __builtin_offsetof (QCowHeader, nb_snapshots) + sizeof(header_data.nb_snapshots))?-1:1];

__LINE__ are not expanded to real line number.



While normally compiling, error message is:
  CC    block/qcow2-snapshot.o
block/qcow2-snapshot.c: In function \u2018qcow2_write_snapshots\u2019:
block/qcow2-snapshot.c:244: error: redefinition of typedef \u2018qemu_build_bug_on____LINE__\u2019 block/qcow2-snapshot.c:242: note: previous declaration of \u2018qemu_build_bug_on____LINE__\u2019 was here
make: *** [block/qcow2-snapshot.o] Error 1


Reply via email to