Regarding compiling - __attribute__((deprecated))

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
An attribute '__attribute__((deprecated))' can be used in a function declaration to indicate the function is deprecated. 


I found some compiling issues as below and need your answers.
1. __declspec (deprecated) not supported in gcc 4.5.3. Perhaps also not supported by later releases.
   __declspec (deprecated) is used by VS on windows, __attribute__((deprecated)) is the equivalent in gcc. While __declspec is the keyword in C/C++ standard, it seems the form of '__declspec (deprecated)' is more standard? Will gcc also support '__declspec (deprecated)' syntax in the future?
2. Cannot compile in some cases, can in similar cases
   The error reads, 'error: attributes are not allowed on a function-definition'. Same to both normal member funtions and construcotr.
    class A 
    {
    public:
        void  func(int a , int b);
    };

    void A::func(int a, int b) __attribute__((deprecated))
    {
    }

    Though I know __attribute__((deprecated)) should be used in function declaration other than definition, but following can compile and warning displays during compiling,
    class A 

    {

    public:

        void  func(int a , int b);

    };


    __attribute__((deprecated)) void A::func(int a, int b) 

    {

    }
3. Used before non-inline constructor, can compile while no deprecated warning.
    class A 


    {


    public:


        A(int i);


    };




    __attribute__((deprecated)) void A::A(int i)


    {


    }

    At least gcc should report '__attribute__((deprecated)) will not take effect' in this case.


Thanks and Best Regards,
Xmly




 		 	   		  



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux