プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
Visual Studio 6.0でビルド可能だったものがVisual C++ 2008 Express EditionでエラーC2664を出してしまい解決法を模索しております。
同様のトラブルを調べてみましたが、例えば「文字セット」を「マルチ バイト文字セットを使用する」にしても改善されませんでした。

void time_sobi(int sobi_time){
long time1,time2 ;
time(&time1);
time2=time1;
while(labs(time1-time2)<sobi_time){
time(&time1);
}
}

上述の部分で:
s\jun\デスクトップ\hight\hight.cpp(112) : error C2664: 'time' : 1 番目の引数を 'long *' から 'time_t *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
1>c:\documents and settings\jun\デスクトップ\hight\hight.cpp(115) : error C2664: 'time' : 1 番目の引数を 'long *' から 'time_t *' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
とメッセージが出て、該当する部分はそれぞれ3,6行目のtime(&time1);です。

ご教示くださる方いらっしゃいましたら宜しくお願い致します。

A 回答 (3件)

そもそも、何をするプログラムなん??


何をもって、動かないと判断してるの??
エラーダイアログが出るの??
実行タイミングがおかしいの??
GUIアプリなの?コマンドラインアプリなの??
んーなもん、
「パソコンの電源入れたけど、動かない」って言われたのと同じ状況。
「6.0の時と同様の動作をしない」
で?6.0の時はどういう具合に動作をしていたのでしょうか。
かなり大雑把な質問なので、もう少し的を絞りましょう。
コンパイルが終わったなら、プロジェクトディレクトリの
debugという名前のフォルダに実行ファイル(.exeファイル)ができていると思います。
それを直接実行してみたら、どうでしょうか。
    • good
    • 0

「ちゃんと動かない」って言われても, 「あなたがどのような動作を期待したのか」「実際にどのような動作になったのか」がわからないと判

断できない.

この回答への補足

大変失礼致しました。

「あなたがどのような動作を期待したのか」-->exeファイルが作成され、実行可能となることを期待

「実際にどのような動作になったのか」-->Visual Studio 6.0の時はビルド(F7)した後、実行(Ctrl + F5)で作成された実行ファイル(.exe)が起動していたが、2008 Express Editionではデバッグの開始が相当しているらしく、デバッグ開始を行うとexeファイルが起動するが6.0の時と同様の動作をしない

判断できますでしょうか。宜しくお願い致します。

補足日時:2009/01/13 07:43
    • good
    • 0

VC++2005からtime_tの既定は64ビットです


_abs64を使って64ビットで処理するか、_time32を使って32ビットで処理してください

参考URL:http://msdn.microsoft.com/ja-jp/library/1f4c8f33 …

この回答への補足

すみません、補足です。
StdAfx.h内で#include <time.h>の宣言がありました。
失礼しました。

コンパイルはうまく行ったのですが、exeファイルの実行がちゃんとなされない状況です。
Visual Studio 6.0の時はビルド(F7)した後、実行(Ctrl + F5)で作成された実行ファイル(.exe)が起動していたのですが、2008 Express Editionでは起動はするのですが、ちゃんと動きません。

これでは情報不足かも知れませんが、何かアドバイス・コメントあれば宜しくお願いします。

補足日時:2009/01/12 22:11
    • good
    • 0
この回答へのお礼

dumm様;

さっそくのご回答ありがとうございます。以下のように_time32に書き換えたらビルドできました。

void time_sobi(int sobi_time){
long time1,time2 ;
_time32(&time1);
time2=time1;
while(labs(time1-time2)<sobi_time){
_time32(&time1);
}
}

自分は普段Cを使っていないのでよくわからず申し訳ございませんが、time_tを使う場合
#include <time.h>
の宣言が必要なのではないでしょうか?このcppファイルには
#include "StdAfx.h"
#include <Windows.h>
#include "Decl-32.h"
の宣言のみです。試しに#include <time.h>の有無で比較してみましたが、関係なくビルドできるようです。

お礼日時:2009/01/12 19:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!