Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Am i defining this struct wrong?

Am i defining this struct wrong?

Scheduled Pinned Locked Moved C / C++ / MFC
c++helpquestion
12 Posts 6 Posters 1 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    Lost User
    wrote on last edited by
    #1

    typedef struct _ID3Info
    {
    char Title[33];
    char Artist[33];
    char Album[33];
    char Year[5];
    char Genre;
    char Comment[33];
    } ID3Info, *pID3Info;

    when i define it that way Visual C++ compiler says: "error C2011: '_ID3Info' : 'struct' type redefinition" what am i doing wrong? Thanks

    R M N T B 5 Replies Last reply
    0
    • L Lost User

      typedef struct _ID3Info
      {
      char Title[33];
      char Artist[33];
      char Album[33];
      char Year[5];
      char Genre;
      char Comment[33];
      } ID3Info, *pID3Info;

      when i define it that way Visual C++ compiler says: "error C2011: '_ID3Info' : 'struct' type redefinition" what am i doing wrong? Thanks

      R Offline
      R Offline
      RockNix
      wrote on last edited by
      #2

      Delete the struct name in the first line : typedef struct { . . So far ... RockNix/// ------------------------------------ www.klangwerker.de Need some articles about Threading, Subclassing, Double Buffering ? Go for it ... Look out for free Win32 Serial Communication Module for VC++ or Borland C++ Builder Visit us on www.klangwerker.de ------------------------------------

      T 1 Reply Last reply
      0
      • L Lost User

        typedef struct _ID3Info
        {
        char Title[33];
        char Artist[33];
        char Album[33];
        char Year[5];
        char Genre;
        char Comment[33];
        } ID3Info, *pID3Info;

        when i define it that way Visual C++ compiler says: "error C2011: '_ID3Info' : 'struct' type redefinition" what am i doing wrong? Thanks

        M Offline
        M Offline
        Maxwell Chen
        wrote on last edited by
        #3

        I think what you wrote is correct. I used to code NI's drivers with many of such struct typedefs. And 3 minutes ago I copied your struct and pasted onto a console project and a MFC project, both of them compiled without an error! Maybe you post the entire build log, and we could find out what happened..... Maxwell Chen No code is good code.

        L 1 Reply Last reply
        0
        • M Maxwell Chen

          I think what you wrote is correct. I used to code NI's drivers with many of such struct typedefs. And 3 minutes ago I copied your struct and pasted onto a console project and a MFC project, both of them compiled without an error! Maybe you post the entire build log, and we could find out what happened..... Maxwell Chen No code is good code.

          L Offline
          L Offline
          Lost User
          wrote on last edited by
          #4

          Where is the entire build log located?

          M 1 Reply Last reply
          0
          • L Lost User

            Where is the entire build log located?

            M Offline
            M Offline
            Maxwell Chen
            wrote on last edited by
            #5

            You may rebuild all again, and copy the content in the Build tab of the Output window. Or you may copy what in the .plg file.... Maxwell Chen No code is good code.

            1 Reply Last reply
            0
            • L Lost User

              typedef struct _ID3Info
              {
              char Title[33];
              char Artist[33];
              char Album[33];
              char Year[5];
              char Genre;
              char Comment[33];
              } ID3Info, *pID3Info;

              when i define it that way Visual C++ compiler says: "error C2011: '_ID3Info' : 'struct' type redefinition" what am i doing wrong? Thanks

              N Offline
              N Offline
              Navin
              wrote on last edited by
              #6

              Anonymous wrote: when i define it that way Visual C++ compiler says: "error C2011: '_ID3Info' : 'struct' type redefinition" From the looks of it, it seems that _ID3Info is somehow aready defined. It could be that: 1. You have a struct of that name defined somewhere else 2. Perhaps you don't have "include guards" in the header file that defines the struct, and it is getting pulled in twice. I always do something like this to ensure that #2 does not happen: #ifndef _whatever_your_h_file_name_happens_to_be_ #define _whatever_your_h_file_name_happens_to_be_ (code of the include file goes here) #endif No generalization is 100% true. Not even this one.

              B 1 Reply Last reply
              0
              • R RockNix

                Delete the struct name in the first line : typedef struct { . . So far ... RockNix/// ------------------------------------ www.klangwerker.de Need some articles about Threading, Subclassing, Double Buffering ? Go for it ... Look out for free Win32 Serial Communication Module for VC++ or Borland C++ Builder Visit us on www.klangwerker.de ------------------------------------

                T Offline
                T Offline
                Tom Archer
                wrote on last edited by
                #7

                The name after the struct is a "tag". The posters problem is elsewhere. Cheers, Tom Archer Author, Inside C# A total abstainer is one who abstains from everything but abstention, and especially from inactivity in the affairs of others.

                1 Reply Last reply
                0
                • L Lost User

                  typedef struct _ID3Info
                  {
                  char Title[33];
                  char Artist[33];
                  char Album[33];
                  char Year[5];
                  char Genre;
                  char Comment[33];
                  } ID3Info, *pID3Info;

                  when i define it that way Visual C++ compiler says: "error C2011: '_ID3Info' : 'struct' type redefinition" what am i doing wrong? Thanks

                  T Offline
                  T Offline
                  Tom Archer
                  wrote on last edited by
                  #8

                  Like Navin, your struct compiles fine in my code. I think if you follow his advice you'll find the source of your problem. Cheers, Tom Archer Author, Inside C# A total abstainer is one who abstains from everything but abstention, and especially from inactivity in the affairs of others.

                  1 Reply Last reply
                  0
                  • N Navin

                    Anonymous wrote: when i define it that way Visual C++ compiler says: "error C2011: '_ID3Info' : 'struct' type redefinition" From the looks of it, it seems that _ID3Info is somehow aready defined. It could be that: 1. You have a struct of that name defined somewhere else 2. Perhaps you don't have "include guards" in the header file that defines the struct, and it is getting pulled in twice. I always do something like this to ensure that #2 does not happen: #ifndef _whatever_your_h_file_name_happens_to_be_ #define _whatever_your_h_file_name_happens_to_be_ (code of the include file goes here) #endif No generalization is 100% true. Not even this one.

                    B Offline
                    B Offline
                    Brian Delahunty
                    wrote on last edited by
                    #9

                    Navin wrote: #ifndef _whatever_your_h_file_name_happens_to_be_ #define _whatever_your_h_file_name_happens_to_be_ (code of the include file goes here) #endif You could also use:

                    #pragma once

                    instead of the above ... however the above woudl be the more standard way of doing things :-D


                    :~ (-_-) :~

                    N 1 Reply Last reply
                    0
                    • L Lost User

                      typedef struct _ID3Info
                      {
                      char Title[33];
                      char Artist[33];
                      char Album[33];
                      char Year[5];
                      char Genre;
                      char Comment[33];
                      } ID3Info, *pID3Info;

                      when i define it that way Visual C++ compiler says: "error C2011: '_ID3Info' : 'struct' type redefinition" what am i doing wrong? Thanks

                      B Offline
                      B Offline
                      Brian Delahunty
                      wrote on last edited by
                      #10

                      Navin wrote: #ifndef _whatever_your_h_file_name_happens_to_be_ #define _whatever_your_h_file_name_happens_to_be_ (code of the include file goes here) #endif You could also use:

                      #pragma once

                      instead of the above ... however the above woudl be the more standard way of doing things :-D


                      :~ (-_-) :~

                      1 Reply Last reply
                      0
                      • B Brian Delahunty

                        Navin wrote: #ifndef _whatever_your_h_file_name_happens_to_be_ #define _whatever_your_h_file_name_happens_to_be_ (code of the include file goes here) #endif You could also use:

                        #pragma once

                        instead of the above ... however the above woudl be the more standard way of doing things :-D


                        :~ (-_-) :~

                        N Offline
                        N Offline
                        Navin
                        wrote on last edited by
                        #11

                        Brian Delahunty wrote: #pragma once Yes, my way would be more "standard", but yours is prettier. :-D No generalization is 100% true. Not even this one.

                        B 1 Reply Last reply
                        0
                        • N Navin

                          Brian Delahunty wrote: #pragma once Yes, my way would be more "standard", but yours is prettier. :-D No generalization is 100% true. Not even this one.

                          B Offline
                          B Offline
                          Brian Delahunty
                          wrote on last edited by
                          #12

                          Navin wrote: Yes, my way would be more "standard", but yours is prettier. Thanks ;)


                          :~ (-_-) :~

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • World
                          • Users
                          • Groups