[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::c_plus_plus

Title:C++
Notice:Read 1.* and use keywords (e.g. SHOW KEY/FULL KIT_CXX_VAX_VMS)
Moderator:DECCXX::AMARTIN
Created:Fri Nov 06 1987
Last Modified:Thu Jun 05 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:3604
Total number of notes:18242

3485.0. "strange last message while building using -ptv" by BACHUS::SABLON (Mich�le Sablon, TP/IM Support Belgium 856-7238) Tue Mar 11 1997 08:32

UNIX V3.2D-2 & V4.0B
C++ V5.5-004

  The sample program below enables me to ask you two questions.

  1.  About the -ptv option:
      The program properly builds. When the option -ptv is added, it, however, 
      generates, as shown, a message refering to a symbol which cannot be 
      translated. Note that the symbol differs given the version of the o.s.

      What does this means ? Is it an error ?

      Note that the executable is generated and runs properly.

  2.  About compiler directives:
      If no instanciation directive is given, the build fails, complaining 
      about an invalid declaration. Looking to the generated file where the 
      problem occurs, it appears that the macro definition (#define) specified 
      in the source, is not passed to this file. But #include instructions are. 
      Is there a rule ? Which one ?

  Thanks in advance for the information.
  Mich�le.

=========
 vub.cxx
=========

#include <stream.h>

template <class T>
class myClass {
  public:
        void ff();
  };

#define TYPE    int

template <class T>
void myClass<T>::ff()
{
    #include "ff.h"
}

void main()
{
        myClass<double> A;

        A.ff();
}

======
 ff.h
======
TYPE    var     = 5;
T       val     = 6;

cout << var << " " << val << " in ff()" << endl;


===================
 -ptv build output
===================

      On UNIX V3.2D-2:
      $ cxx -define_templates -o vub vub.cxx -ptv

	Writable_repository: ./cxx_repository
	Repository_list: ./cxx_repository


	prelinker invoked

	Line read from pipe: ldr_process_context  [ref: /usr/shlib/libc.so]
	Couldn't translate symbol: ldr_process_context

      On UNIX V4.0B:
      $ cxx -define_templates -o vub vub.cxx -ptv
	Writable_repository: ./cxx_repository
	Repository_list: ./cxx_repository


	prelinker invoked

	Line read from pipe: _end       [ref:  /usr/shlib/libc.so]
	Couldn't translate symbol: _end

=================================
 cxx without instanciation error
=================================

	cxx: Error: ./ff.h, line 8: Invalid declaration.
	TYPE    var     = 5;
	--------^
	cxx: Error: ./cxx_repository/myClass__Td.cxx, line 3: Invalid 
	declaration.
	typedef myClass<double > __dummy_;
	---------------^
	ld:
	Unresolved:
	myClass<double>::ff(void)

    ./cxx_repository/myClass__Td.cxx
    ================================
#include <stream.h>
#include "ff.h"
typedef myClass<double > __dummy_;

T.RTitleUserPersonal
Name
DateLines
3485.1Possibly because -ptv and -define_templates options are combined?BEGIN::ROTITHORTue Mar 11 1997 11:1113
slab.zko.dec.com> cxx -define_templates -o vub vub.cxx
slab.zko.dec.com> vub
5 6 in ff()
slab.zko.dec.com> cxx -V
cxx  (cxx)
DEC C++ V5.5-004 on Digital UNIX (Alpha)

-define_templates looks like a more appropriate option for the structure of this
code.
If you want to sepcify auto-instantiation, the template defn can be moved to a
separate header file.
The _end symbol translation seems to be a warning (why?) and does not appear if
verbose mode is not specified (-pt instead of -ptv)
3485.2more about -ptvBACHUS::SABLONMich�le Sablon, TP/IM Support Belgium 856-7238Tue Mar 11 1997 11:538
.1
  The same behaviour when using another option forcing instanciation. E.g.
  -tlocal, -tused.

  And also after reorganizing the program into main, template.cxx and 
  template.hxx with no option specified out of -ptv.

Mich�le.
3485.3ignore the "Couldn't translate symbol:" messagesDECC::SEIGELTue Mar 11 1997 12:1410
You can ignore messages like the following:

	Line read from pipe: _end       [ref:  /usr/shlib/libc.so]
	Couldn't translate symbol: _end

-ptv was originally written to aid the developers of the template
support.  Hence, it can cause lots of messages to be generated that
do not make sense to C++ users.

Harold
3485.4why #include and not #define ?BACHUS::SABLONMich�le Sablon, TP/IM Support Belgium 856-7238Thu Mar 13 1997 04:497
    Thanks for your answers about -ptv.

    Anybody about why the #include instructions are passed to the generated 
    sources in the repository and not the #define instructions ?

    Thanks in advance,
Mich�le.