中治様。早速の回答ありがとうございました。

>
> ファイル名が .cpp で終わっているので、C++ のプログラムだとコンパイラが判断
> するからです。
>
> FreeBSD 附属の cc の実体は gcc ですが、その info によると、
>
> Options Controlling the Kind of Output
> ======================================
>
>    Compilation can involve up to four stages: preprocessing, compilation
> proper, assembly and linking, always in that order.  The first three
> stages apply to an individual source file, and end by producing an
> object file; linking combines all the object files (those newly
> compiled, and those specified as input) into an executable file.
>
>    For any given input file, the file name suffix determines what kind
> of compilation is done:
>
> ...
>
> `FILE.cc'
> `FILE.cxx'
> `FILE.cpp'   ←これ
> `FILE.C'
>      C++ source code which must be preprocessed.  Note that in `.cxx',
>      the last two letters must both be literally `x'.  Likewise, `.C'
>      refers to a literal capital C.
>
> ですから、ファイル名を temp.c に変更するとうまくいくはずです。
> -- 

 なるほど...確かに.cに変えれば動きますね...
 ただ、実際に5.2に移植したいプログラムは、クラスを使った上に内部でsprintfを
使って文字列の設定をやっているプログラムなので、単純に拡張子(UNIXでこう呼ん
でいいのかな?)を変えるわけには行きません。
 例えば、下のようなコードを正常に動かしたければどうすればよいでしょうか?

#include <stdio.h>

class Printer
{
public:
        void out(){printf( "hello!" ); }
};

main()
{
        Printer p;
        p.out();

        return 1;
}

 FreeBSD4.7でやったときには普通にリンクまで出来ていたのですが...誠に申し
訳ありませんが、よろしくお願いいたします。 

**************************************
*** 田淵義弘 in SPOONsoftware
*** E-Mail : tabuchi@spoonsoftware.com
*** HP : http://www.spoonsoftware.com
**************************************