S
Sam Steingold
the following program does not compile with g++ 4.1.1:
====================================================
// $Id$
// $Source$
#include <stdint.h>
#include <stdio.h>
typedef struct { uint32_t one_c; } chart;
#define as_chart(c) ((chart){one_c
c)})
#define ascii(x) as_chart((uint8_t)(x))
#define CR 13
#define LF 10
static void wr_ch_unbuffered_dos (void) {
static chart const crlf[2] = { ascii(CR), ascii(LF) };
for (int i = 0; i < 2; i++)
printf("%d\n",crlf.one_c);
}
int main (int argc, char *argv[]) {
printf("%d %s\n",argc,argv[0]);
wr_ch_unbuffered_dos();
return 0;
}
====================================================
cpp-struct.cc: In function 'void wr_ch_unbuffered_dos()':
cpp-struct.cc:14: warning: missing braces around initializer for 'const chart'
cpp-struct.cc:14: warning: missing braces around initializer for 'const chart'
cpp-struct.cc:14: error: cannot convert 'chart' to 'uint32_t' in initialization
cpp-struct.cc:14: error: cannot convert 'chart' to 'uint32_t' in initialization
the bad line is
static chart const crlf[2] = { ascii(CR), ascii(LF) };
I am pretty sure code like this worked with g++ 3.
What do I do now?
Thanks!
$ g++ --version
g++ (GCC) 4.1.1 20060525 (Red Hat 4.1.1-1)
====================================================
// $Id$
// $Source$
#include <stdint.h>
#include <stdio.h>
typedef struct { uint32_t one_c; } chart;
#define as_chart(c) ((chart){one_c
#define ascii(x) as_chart((uint8_t)(x))
#define CR 13
#define LF 10
static void wr_ch_unbuffered_dos (void) {
static chart const crlf[2] = { ascii(CR), ascii(LF) };
for (int i = 0; i < 2; i++)
printf("%d\n",crlf.one_c);
}
int main (int argc, char *argv[]) {
printf("%d %s\n",argc,argv[0]);
wr_ch_unbuffered_dos();
return 0;
}
====================================================
cpp-struct.cc: In function 'void wr_ch_unbuffered_dos()':
cpp-struct.cc:14: warning: missing braces around initializer for 'const chart'
cpp-struct.cc:14: warning: missing braces around initializer for 'const chart'
cpp-struct.cc:14: error: cannot convert 'chart' to 'uint32_t' in initialization
cpp-struct.cc:14: error: cannot convert 'chart' to 'uint32_t' in initialization
the bad line is
static chart const crlf[2] = { ascii(CR), ascii(LF) };
I am pretty sure code like this worked with g++ 3.
What do I do now?
Thanks!
$ g++ --version
g++ (GCC) 4.1.1 20060525 (Red Hat 4.1.1-1)