OpenWatcom C++

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
NGNG
IDE やプロファイラまでついてくるフリー最強の C++ コンパイラ
Watcom C++ について語りませう。

一応、こちらから入手できます。
難点はちょっと大きい事(45MB)です。
http://www.openwatcom.org/
2011/12/06(火) 17:52:02.46
嵌ったので俺メモ
誰か英語力ください
32bit windowsプログラム作るときのwlinkのパラメータ

wlink N 実行ファイル F オブジェクトファイル L ライブラリ FORM windows nt

オブジェクトファイルとライブラリはコンマ区切り、ライブラリのパスはLIBPで与える
で、LIBFってなんに使うんだ?
2011/12/06(火) 20:52:23.83
>>678
ttp://www.users.pjwstk.edu.pl/~jms/qnx/help/watcom/compiler-tools/wlink.html#LibfileDirective
カレントにオブジェクトファイルがなければLIBPで指定したパスから探してくれる
2011/12/07(水) 01:22:07.22
CC386とか誰も知らないだろうな…。
681デフォルトの名無しさん
垢版 |
2011/12/10(土) 23:10:32.50
>>677
そのサイト死んどる
2011/12/11(日) 10:31:54.91
>>681
生きてるぞ?
683デフォルトの名無しさん
垢版 |
2011/12/11(日) 15:29:10.30
Access forbidden!

要求されたディレクトリへのアクセス権限がありません。 インデックスドキュメントが存在しないか、 ディレクトリの読み込みが許可されていません。

サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。

Error 403

owbuilder.malakovi.cz
Sun Dec 11 07:28:18 2011
Apache/2.2.17 (Linux/SUSE)
2011/12/11(日) 19:45:42.71
\(^o^)/オワタ

<html>
<head>
</head>
<body>
</body>
</html>
2011/12/12(月) 22:32:08.65
>>677
ソースの差分見ればわかるけど、そんなに変更が加わってないんだよね。
2011/12/12(月) 23:33:04.70
デイリーのソースはあるのか
ビルドしてみるかな
2011/12/12(月) 23:56:15.38
>>686
あざーっす!
2011/12/13(火) 00:29:08.03
sedとかcatとかteeとか自前で作るのか
素のwindowsには入ってないしなあ
689デフォルトの名無しさん
垢版 |
2011/12/13(火) 11:49:29.14
デイリーソースのビルドの仕方が書いてないのでメモ
windowsでやった

必要なもの
・ソース
・インストール済みのopen watcom
 ビルド鯖は1.9だったけど、俺は12/10に落としたデイリー版でやった

1.フォルダ名にスペースが入ってると何が起こるかわからないので
 C直下にow_dailyとか言う名前でフォルダ構造を維持したまま展開
2.コマンドプロンプト開いて、インストールしてあるopen watcomのパス通して、展開したフォルダに移動してbuild.cmdを実行
3.忘れたころにそれっぽいのができてる
2011/12/13(火) 12:07:11.46
>>680
LADsoft?
今はOrange Cに発展したよ
DOS、Win32両方対応で軽いから昔から使ってる
2011/12/13(火) 16:11:07.60
Win7 64bitでビルドしてみたら最後のほうでエラーみたいなの出たお
2011/12/13(火) 16:38:42.88
>>691
バグ報告よろ
ttp://bugzilla.openwatcom.org/
693691
垢版 |
2011/12/13(火) 19:07:57.69
x64では16bitコードが動作しないせいかも
ttp://i.imgur.com/i8zMi.png
2011/12/13(火) 20:34:27.11
>>677
運良くダウンロードだけしてたので今試したのだけど
todo 書かれてた 2.0 じゃなくて 1.9 からの微修正ぽい。
templateとかstlとか あまり進んでなさげ。
2011/12/14(水) 05:50:32.48
>>690
だめ文字は無理ぽ?
2011/12/14(水) 21:16:01.08
これは a Windows NT character-mode 実行可能 です
2011/12/15(木) 01:20:20.74
>>694
STLくらいGCCからコピれ
2011/12/15(木) 23:40:04.21
2.0ではstd::stable_sort()を実装してほしい。
2011/12/16(金) 22:18:35.80
>>697
GPLに感染しない?
2011/12/16(金) 23:29:19.67
>>699
ヒント:書写
2011/12/17(土) 22:37:56.58
これVC6とどっちが上?
コンパイラ最適化とか
2011/12/18(日) 00:07:07.76
VC6はオワコン
2011/12/22(木) 11:29:59.12
dosbox使えば64bitのvista/7でもビルドできるかもしれん
だが俺は64bitのvista/7が入ってるマシンを持ってなかった
2011/12/22(木) 15:43:37.87
鼻毛12800円に
メモリ8Gを3000円弱で追加して
Win7Enterprise90日評価版で。
2011/12/22(木) 15:48:41.12
つデュアルブート
2011/12/24(土) 16:35:49.07
VMWareでいいじゃん
2012/01/28(土) 20:03:04.26
デイリービルドの鯖が実質無くなったのか
708デフォルトの名無しさん
垢版 |
2012/02/29(水) 21:41:01.97
これは a Windows NT character-mode 実行可能 です
2012/03/23(金) 18:24:05.03
保守ついでにネタにマジレスするけどメッセージテーブルいじればいんじゃね?
つか、メッセージテーブルのせいで今日のデイリーのビルドに失敗するとは思わんかったw
2012/04/14(土) 10:45:43.38
本家に最適化のバグ報告したいんだがどうすりゃいいんだろ?
Read Onlyって書いてあるが、メルアド登録すればトラッカーに書き込めるのか…
2012/04/23(月) 14:43:02.59
ニュースグループに投げるとかircとか?
2012/04/28(土) 11:42:18.74
>>710
どんなバグよ。
2012/05/07(月) 22:13:12.72
15年ぶりくらいにwatcomC++使ってみたけど。
相変らず日本語リソースの文字化け問題なおってないのねえ(ノ∀`)
2012/05/19(土) 11:11:01.86
>>713
んじゃ、開発元に報告よろ。
715デフォルトの名無しさん
垢版 |
2012/05/26(土) 22:28:09.90
-zk付けてないオチじゃ無いよな
2012/07/14(土) 23:30:41.78
OpenWatcom 2.0

 ☆ チン マチクタビレタ〜
     マチクタビレタ〜
☆ チン  〃 ∧_∧
 ヽ___\(\・∀・)
  \_/ ⊂ ⊂_)
  / ̄ ̄ ̄ ̄ ̄ /|
 | ̄ ̄ ̄ ̄ ̄ ̄| |
 | 愛媛みかん |/
2012/08/08(水) 16:24:13.24
freedos1.1拾ってきたからついでにopenwatcom入れてみた
どう遊ぼうか
2012/08/08(水) 16:30:01.96
それ俺もやってみたかったのよね
何か面白いことあったら後でおせーて
2012/08/08(水) 18:25:06.05
とりあえずreadme.txtにあるDOSの設定でopenwatcomは普通に動く
スレチだけどvmwareとfreedos1.1の相性が悪いっぽくて、日本語化するとfreedosが固まるw
2012/08/08(水) 18:47:55.07
そうするとVitual Boxか…はたまたQEMUか…仮想化ソフトってあと何があったけ?
というかDOSの時代を知らないからどうやってビルドするのか見当つかねw
2012/08/09(木) 11:25:51.63
jdisp.sys /HS=LCとかそういう話?
2012/08/09(木) 12:50:43.13
そういう話だった
config.sysの設定だいぶ忘れてるなぁ
2012/08/09(木) 13:14:42.66
日本語化したままコンパイラ動かしたら死亡したw
2012/08/10(金) 17:36:22.61
stlportのポーティングあるのな
1.8用だけど、openwatcomのランタイム呼び出す部分ごにょごにょすれば十分戦える
ttp://www.openwatcom.org/index.php/User:Cmeerw
2012/08/15(水) 15:08:47.48
stlportのデバッグモードのdllリンクするとランタイムエラー出るな
調査は誰かに任せた
以下メッセージ

undefined constructor or destructor called!
726725
垢版 |
2012/08/15(水) 15:37:57.32
ソース貼ってなかった

#include <iostream>
#include <string>
int main()
{
std::cout << "hello, world!" << std::endl;
return 0;
}
2012/08/23(木) 16:53:36.29
それっぽいヘッダ見つからないけど、
SSE使おうと思ったらアセンブラで直打ち?
2012/08/23(木) 19:09:11.79
下手すればアセンブラすら対応してないないかもと思ったら
かろうじてSSE3までは対応していた
2012/08/25(土) 17:37:17.84
Watcomerなら #pragma で埋め込んでください。
2012/09/03(月) 16:59:04.15
こうして
#pragma pack(4)
struct __m128 {
float m128_f32[4];
};

こうやって
extern "C" __m128 _mm_add_ps(__m128 &a, __m128 &b);

こうやると
#pragma aux _mm_add_ps = \
".686 " \
".XMM " \
"movaps xmm0,[eax] " \
"movaps xmm1,[edx]" \
"addps xmm0,xmm1" \
"movaps [esi],xmm0" \
parm [eax] [edx]


…movapsでこけるな
とりあえずmovups使うとして、アライメントの調整どうするんだ?
731730
垢版 |
2012/09/03(月) 19:51:42.43
コンパイラに用意されてないっぽいから適当にやるか
732730
垢版 |
2012/09/04(火) 16:39:10.83
#pragma pack(16)
ってやったら通った
けど微妙に気持ち悪いな
2012/09/04(火) 22:22:55.40
unsigned char *p1 = malloc( sizeof(struct __m128) + 15);
unsigned char *p2 = malloc( sizeof(struct __m128) + 15);
struct __m128 *x1 = p1 & 0xfffffff0;
struct __m128 *x2 = p2 & 0xfffffff0;
_mm_add_ps( &x1,&x2 );

free( p1 );
free( p2 );
734733
垢版 |
2012/09/04(火) 22:26:06.39
引数に渡すとこ間違えた。&いらんか。
735デフォルトの名無しさん
垢版 |
2012/10/08(月) 16:55:46.38
インスコミスったくさい
2012/10/08(月) 23:51:19.90
がんばってくさい
2012/10/17(水) 00:47:21.13
ばあさんや、2.0はまだかのう?
2012/10/19(金) 00:48:04.10
じいさん、さっき1.9がでたばっかりじゃろ
739デフォルトの名無しさん
垢版 |
2012/12/06(木) 12:41:58.34
bad_allocクラスがあるんだから投げてくれてもいいのになあ
2012/12/20(木) 16:28:37.35
C99にあるけど未実装の数学関数をfortranのライブラリから適当に持ってくる場当たりハック
741デフォルトの名無しさん
垢版 |
2013/01/16(水) 19:16:26.12
stringのoperator<<とoperator>>まだー?
2013/01/17(木) 06:47:05.24
// wcl386 whattime.cpp
#define FILE_NAME "whattime.txt"
#include <fstream.h>
#include <iomanip.h>
#include <strstrea.h>
#include <string.hpp>
#include <time.h>

int main()
{
  ostrstream os;
  strstreambuf *b = os.rdbuf();
  time_t timer = time(NULL);
  struct tm *p = localtime(&timer);
  os << " " << setfill('0') << setw(2) << p->tm_hour;
  os << ":" << setfill('0') << setw(2) << p->tm_min;
  os << ":" << setfill('0') << setw(2) << p->tm_sec << ends;
  String hours_minutes_seconds( os.str() );
  b->freeze(0);

  ofstream file;
  file.open(FILE_NAME, ios::app);
  file << hours_minutes_seconds;
  file.close();
  return 0;
}
/*
whattime
type whattime.txt
*/
2013/01/17(木) 06:49:45.39
C:\work>whattime

C:\work>type whattime.txt
06:48:35
C:\work>whattime

C:\work>type whattime.txt
06:48:35 06:48:56
C:\work>whattime

C:\work>whattime

C:\work>whattime

C:\work>type whattime.txt
06:48:35 06:48:56 06:49:04 06:49:06 06:49:11
C:\work>
2013/01/24(木) 13:56:44.17
みんな喜べ
色々用意ができれば今年の終わりに2.0出せるかもってよ
ソースはニュースグループ
2013/01/24(木) 21:28:38.05
2.0で何か変わるの?
2013/01/24(木) 22:52:43.36
Windows8対応
747デフォルトの名無しさん
垢版 |
2013/02/10(日) 17:44:30.57
Digital Mars C/C++ Compiler Version 8.56 がひっそりと出てる
ttp://www.digitalmars.com/download/freecompiler.html
2013/02/10(日) 18:42:19.32
いつの間にかDigital MarsのスレがDAT落ちしてる…
2013/02/11(月) 12:36:53.03
去年大量糞スレ立て荒らしがあった
例の件の証拠隠滅と思われ
2013/02/26(火) 12:40:21.12
nanを比較してtrueが帰ってきてちょっとあせったけど
そもそもC++98だとnanの比較が未定義だったぜ
2013/03/12(火) 18:31:42.20
sgiのSTLの最新版がrope以外殆んどそのまま使えそうな予感
エラーでたところのtypename消してコンフィグいじったらコンパイル通った
2013/05/24(金) 23:50:53.13
stlport 5.2.1 for dmc,Open Watcom
ttp://www.6809.net/tenk/?%E9%9B%91%E8%A8%98%2f2013-05-20
2013/07/26(金) NY:AN:NY.AN
/*
wcl386 nonnum.cpp
nonnum 5
nonnum -
nonnum ^
*/
#include <iostream.h>
#include <string.hpp>
int main(int argc, char *argv[])
{
  String line("0123456789");
  const int line_length = line.length();
  if(argc != 2) return 1;

  int b = line.index(argv[1]); // nonnum 5
  if(b != NPOS) {
    cout << argv[1] << " can be found." << endl;
  } else {
    String non_number(argv[1]);
    if(non_number == "-") {
      b = line_length;
    } else {
      b = 0;
    }
  }
  String lead = line(0, b);
  String trail = line(b, line_length);
  cout << trail << endl; // "56789"
  return 0;
}
2013/07/26(金) NY:AN:NY.AN
nonnum "^"
2013/10/05(土) 18:40:23.90
確信
2013/10/17(木) 18:22:02.26
エディタでソースの日本語表示ってフォントを変えれば出来るんだな、つかフォントの変え方が独特すぎる
2013/10/21(月) 23:27:02.65
#include <iostream>
class StaticInteger {
    int data;
    int *pointer;
public:
    StaticInteger(int *p, int d) {
        pointer = p;
        data = d;
    }

    int acquire() const { return data; }
    void revise(int *p, int d) {
        if(p == pointer) data = d;
    }
} *static_integer;

void function() {
    using namespace std;
    cout << static_integer->acquire() << endl;
}

static int static_int;
int main(void) {
    StaticInteger si(&static_int, 2345);
    static_integer = &si;
    function();
    static_integer->revise(&static_int, 8765);
    function();
    return 0;
}
2013/11/29(金) 10:53:13.80
2.0まだ〜?
2013/12/16(月) 11:34:12.96
http://sourceforge.net/projects/openwatcom/files/current-build/
2013/12/17(火) 23:31:20.81
ファイル名 2.0 だけど正式releaseじゃなくてデイリービルドなのか?
少し試してみたけど1.9 とほとんど変わってなさそうだった。
ヘッダみるとインデントや名前の付け替えは多いけど肝心の修正は少なそうだし
2014/01/25(土) 12:55:02.01
stubがへんな日本語になのだが、英語にする方法教えて
環境は Windows XPで、wcl Version 1.8

>これは an OS/2 16-bit 実行可能 です
2014/01/28(火) 21:09:37.48
SET WLANG=english
2014/01/29(水) 13:52:17.88
見栄えがよくなったよ
ありがとん

>This is an OS/2 16-bit executable
2014/02/12(水) 23:45:17.25
誰か新ネタくれよ
765 【だん吉】
垢版 |
2014/03/01(土) 00:41:09.57
これとVS2010のC++とどっちがいいかな
2014/03/09(日) 09:54:14.45
std::forward_listきたか
2014/03/21(金) 15:40:46.17ID:HlK5TI/j
プロファイラのつかいかた
例でおしえてください
おねがいします
コマンドツールでもプロファイラつかえますか?
わからんわからん
2014/03/22(土) 17:19:23.68ID:4HmosEXO
>>767
ヘルプ見て分からないか?
デバッグ情報付きでビルドして、サンプラにかけて出たファイルをプロファイラに渡すだけだろ
最適化はかけとけよ
2014/04/03(木) 04:15:15.90ID:DqBt0M+X
#include <iostream.h>
#include <string.h>
#include <string.hpp>

void display(String & s)
{
    cout << "length = " << s.length() << endl;
    int u = strcspn( s.c_str(), "0123456789"); // Error!
    cout << "u = " << u << endl;
}
// つづく
2014/04/03(木) 04:16:13.95ID:DqBt0M+X
int main(int argc, char *argv[])
{
    const int COUNT = 4096;
    String id("bcd10023");
    int id_length = id.length();

    switch(argc) {
    case 2:
        if(! strcmp(argv[1], "-e") ) { // Errorになるオプション
            String s = id(id_length, COUNT);
            display(s);
        } else {
            display(id);
        }

        break;
    default:
        display(id);
        break;
    }

    return 0;
}
2014/04/03(木) 04:18:00.77ID:DqBt0M+X
C:\work>cspan
length = 8
u = 3

C:\work>cspan -e
length = 0
The instruction at 0x00401412 referenced memory at 0x00000000.
The memory could not be read.

C:\work>cspan -s
length = 8
u = 3
2014/04/03(木) 05:02:24.33ID:8q69jo+f
> String s = id(id_length, COUNT);
なにこれ

C:\WATCOM\docs\cpplib.pdf

にも書いてないけど
2014/04/03(木) 05:27:06.37ID:DqBt0M+X
部分文字列です
sub-sequenceは、posからはじまって、len個つづきます
The sub-sequence begins at offset pos within the String object and continues for len characters.


String::operator ()()

Synopsis: #include <string.hpp>
public:
String String::operator ()( size_t pos, size_t len ) const;
Semantics: This form of the operator () public member function extracts a sub-sequence of characters from
the String object. A new String object is created that contains the sub-sequence of characters.
The sub-sequence begins at offset pos within the String object and continues for len characters. The
first character of a String object is at position zero.
If pos is greater than or equal to the length of the String object, the result is empty.
If len is such that pos + len exceeds the length of the object, the result is the sub-sequence of characters
from the String object starting at offset pos and running to the end of the String object.
Results: The operator () public member function returns a String object.
See Also: String::operator [], operator char, operator char const *

String Class 873
cpplib.pdf
2014/04/03(木) 05:31:01.56ID:DqBt0M+X
// substri.cpp
#include <iostream.h>
#include <string.hpp>

int main(int argc, char *argv[])
{
    const int COUNT = 4096;
    String id("bcd10023");
    int id_length = id.length();

    String s = id(id_length, COUNT);
    cout << "s: length = " << s.length() << endl;
    cout << s << endl;

    int count = 3;
    int begin = 3;
    String g = id(begin, count);
    cout << "g: length = " << g.length() << endl;
    cout << g << endl;
    return 0;
}
/*

C:\work>substri
s: length = 0

g: length = 3
100

*/
2014/05/25(日) 16:37:45.33ID:Rj36S/n2
追加されそうにないし暇つぶしに書いた
大体動く

namespace std{
inline istream&amp; operator>>(istream is, string&amp; str)
{
if(!is.good())return is;
str.erase();
string::size_type sz = is.width();
if(sz==0)sz=str.max_size();
std::cout << is.width() << std::endl;
char c;
is.get(c);
for(string::size_type i=0; !isspace(c) &amp;&amp; !is.eof() &amp;&amp; (i < sz);i++){
str += c;
is.get(c);
}
is.width(0);
return is;
};

inline ostream&amp; operator<<(ostream os,const string str)
{
if(!os.good())return os;
os.write(str.data(),str.size());
return os;
};
}
2014/06/09(月) 23:57:18.89ID:dAVEHAsk
windows 7,64bitを使っているのですが,
wclでコンパイルした実行ファイルは,64bitでは使えない
というメッセージがでるのですが,wcl386でコンパイルする
と実行できるのです。
wclとwcl386とではどう違うのでしょうか。
2014/06/10(火) 01:06:02.23ID:kNmgHm7N
wcl は 16bit CPU 環境用の exe を生成。
wcl386 は 32bit CPU 環境用の exe 生成。

32bit windows は 16/32 bit(cpu) exe を実行できるけど、
64bit windows は 32/64bit exe のみで 16bit exeを実行できない。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況