×

Discussion Board

Results 1 to 7 of 7
  1. #1
    Regular Contributor
    Join Date
    Sep 2004
    Location
    Adelaide
    Posts
    73

    Red face C++ struct 的問題

    我想加入一個 struct variable 到我的程序中, 但是擔心如果 arm build 不容許 struct define 在header 中, 會導致很多code 要重寫, 請問 define struct type 在header 中是合法嗎?

    I want to declare a struct variable in the header file, but I afraid ARM build does not allow struct object exist in header. If so, lots of code will need to be rewrtitten. Can anyone please tell me is it legal to declare a struct type in header file?

    I know stucts are define in *.hr or *.rss . I also know struct can only have "basic types" in Symbian definition. In my case I will use a container class to store vlue (linked list).

    I just want to make it sure that struct can work like in C/C++.

    Thanks

    Kit
    -----------------------
    Code
    ------------------------
    // test.h

    public:
    struct holder
    {
    TsglQue<TChar> x;
    TsglQue<TChar> y;
    TsglQue<TChar> z;
    };


    //test.cpp
    holder myHolder;
    myHolder.x=1; //add an element into myHolder.x

    ..

  2. #2
    Regular Contributor
    Join Date
    Jul 2004
    Location
    shenzhen
    Posts
    193
    你不是说资源中的struct吧?

    c++的struct 就是class,在c++中不过是默认作用域是public的。所有的c++编译器都会允许struct定义在头文件中,就好像class一般我们定义在头文件中一样。

    symbian的arm编译器应该是使用gcc的变种,也是没有问题的。

    symbian sdk还是c++,并没有专门发明一种语言叫symbian c++。因此c++支持的(当然也要编译器的参与)语法,都可以在symbian中使用。例如,只要arm的c++编译器支持c++异常,就没有什么可以阻止你使用c++异常。当然symbian的sdk不支持,你用起来会很别扭。

    basic types" in Symbian definition,这个也只是一个symbian的编码惯例,编译器根本不知道这些。你完全可以在struct中定义任何c++语法认可的东西。

  3. #3
    Registered User
    Join Date
    Feb 2004
    Posts
    1,980
    不是所有标准C++的东西都可以直接移植到Symbian C++开发中的。

    r60600

  4. #4
    Regular Contributor
    Join Date
    Jul 2004
    Location
    shenzhen
    Posts
    193
    ISO C++其实很少有平台相关的东西,主要集中在io stream上。其实symbian os仍然提供了c library,文件这一块仍然可以使用fopen等函数,估计原则上没有问题。不过C++的io stream太复杂,可以考虑symbina的c library,如fopen什么的,我一直用也至今也没有出什么问题。不过我主要是写配置文件,比较简单。用symbian sdk提供的api应该更加有效,但是如果考虑移植性的话,使用c library还是有它的价值的。

    另外一块是stl容器和算法,这个主要是编译器支持的问题。和平台关系不大。例如我自己参考stl写了一个简单的string,用起来也比较爽,string 直接+=就可以了,内部自动管理内存分配,就是有些时侯需要和api当交道的时侯需要转换成TPtr,这个到也不是特别麻烦,提供一个转换操作符就可以了。

  5. #5
    Regular Contributor
    Join Date
    Sep 2004
    Location
    Adelaide
    Posts
    73
    其實.......請問 在 header中 declare struct 是否合法呢?

  6. #6
    Super Contributor
    Join Date
    Sep 2003
    Posts
    694
    应该没有问题,你注意你使用的生命周期就可以了。对于标准C++的东西,如果一个平台支持C++开发,那么标准的C++就应该被支持,除了别的工具所添加的特性或者扩展,不过,这些也不在标准C++中。





    Bluerose

  7. #7
    Regular Contributor
    Join Date
    Sep 2004
    Location
    Adelaide
    Posts
    73
    Thank you for your reply :-)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
×