X



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

一応、こちらから入手できます。
難点はちょっと大きい事(45MB)です。
http://www.openwatcom.org/
0730デフォルトの名無しさん
垢版 |
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使うとして、アライメントの調整どうするんだ?
0731730
垢版 |
2012/09/03(月) 19:51:42.43
コンパイラに用意されてないっぽいから適当にやるか
0732730
垢版 |
2012/09/04(火) 16:39:10.83
#pragma pack(16)
ってやったら通った
けど微妙に気持ち悪いな
0733デフォルトの名無しさん
垢版 |
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 );
0734733
垢版 |
2012/09/04(火) 22:26:06.39
引数に渡すとこ間違えた。&いらんか。
0735デフォルトの名無しさん
垢版 |
2012/10/08(月) 16:55:46.38
インスコミスったくさい
0739デフォルトの名無しさん
垢版 |
2012/12/06(木) 12:41:58.34
bad_allocクラスがあるんだから投げてくれてもいいのになあ
0740デフォルトの名無しさん
垢版 |
2012/12/20(木) 16:28:37.35
C99にあるけど未実装の数学関数をfortranのライブラリから適当に持ってくる場当たりハック
0741デフォルトの名無しさん
垢版 |
2013/01/16(水) 19:16:26.12
stringのoperator<<とoperator>>まだー?
0742デフォルトの名無しさん
垢版 |
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
*/
0743デフォルトの名無しさん
垢版 |
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>
0744デフォルトの名無しさん
垢版 |
2013/01/24(木) 13:56:44.17
みんな喜べ
色々用意ができれば今年の終わりに2.0出せるかもってよ
ソースはニュースグループ
0747デフォルトの名無しさん
垢版 |
2013/02/10(日) 17:44:30.57
Digital Mars C/C++ Compiler Version 8.56 がひっそりと出てる
ttp://www.digitalmars.com/download/freecompiler.html
0750デフォルトの名無しさん
垢版 |
2013/02/26(火) 12:40:21.12
nanを比較してtrueが帰ってきてちょっとあせったけど
そもそもC++98だとnanの比較が未定義だったぜ
0751デフォルトの名無しさん
垢版 |
2013/03/12(火) 18:31:42.20
sgiのSTLの最新版がrope以外殆んどそのまま使えそうな予感
エラーでたところのtypename消してコンフィグいじったらコンパイル通った
0753デフォルトの名無しさん
垢版 |
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;
}
0756デフォルトの名無しさん
垢版 |
2013/10/17(木) 18:22:02.26
エディタでソースの日本語表示ってフォントを変えれば出来るんだな、つかフォントの変え方が独特すぎる
0757デフォルトの名無しさん
垢版 |
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;
}
0760デフォルトの名無しさん
垢版 |
2013/12/17(火) 23:31:20.81
ファイル名 2.0 だけど正式releaseじゃなくてデイリービルドなのか?
少し試してみたけど1.9 とほとんど変わってなさそうだった。
ヘッダみるとインデントや名前の付け替えは多いけど肝心の修正は少なそうだし
0761デフォルトの名無しさん
垢版 |
2014/01/25(土) 12:55:02.01
stubがへんな日本語になのだが、英語にする方法教えて
環境は Windows XPで、wcl Version 1.8

>これは an OS/2 16-bit 実行可能 です
0765 【だん吉】
垢版 |
2014/03/01(土) 00:41:09.57
これとVS2010のC++とどっちがいいかな
0767デフォルトの名無しさん
垢版 |
2014/03/21(金) 15:40:46.17ID:HlK5TI/j
プロファイラのつかいかた
例でおしえてください
おねがいします
コマンドツールでもプロファイラつかえますか?
わからんわからん
0768デフォルトの名無しさん
垢版 |
2014/03/22(土) 17:19:23.68ID:4HmosEXO
>>767
ヘルプ見て分からないか?
デバッグ情報付きでビルドして、サンプラにかけて出たファイルをプロファイラに渡すだけだろ
最適化はかけとけよ
0769デフォルトの名無しさん
垢版 |
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;
}
// つづく
0770デフォルトの名無しさん
垢版 |
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;
}
0771デフォルトの名無しさん
垢版 |
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
0773デフォルトの名無しさん
垢版 |
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
0774デフォルトの名無しさん
垢版 |
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

*/
0775デフォルトの名無しさん
垢版 |
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;
};
}
0776デフォルトの名無しさん
垢版 |
2014/06/09(月) 23:57:18.89ID:dAVEHAsk
windows 7,64bitを使っているのですが,
wclでコンパイルした実行ファイルは,64bitでは使えない
というメッセージがでるのですが,wcl386でコンパイルする
と実行できるのです。
wclとwcl386とではどう違うのでしょうか。
0777デフォルトの名無しさん
垢版 |
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を実行できない。
0779デフォルトの名無しさん
垢版 |
2014/08/03(日) 12:09:22.65ID:91Gs3y/1
★2ch勢いランキングサイトリスト★

◎ +ニュース
・ 2NN
・ 2chTimes
◎ +ニュース新着
・ 2NN新着
・ Headline BBY
◎ +ニュース他
・ Desktop2ch
・ 記者別一覧
◎ 全板
・ 全板縦断勢いランキング
・ スレッドランキング総合ランキング
◎ 実況込み
・ 2勢
・ READ2CH
・ i-ikioi

※ 要サイト名検索
■ このスレッドは過去ログ倉庫に格納されています

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