NSDC(NSD.Lib compiler) for Android 150716/ nscのUNIX系でのコンパイル方法

NSDC(NSD.Lib compiler) for Android 150716
https://www.dropbox.com/s/x6oaqtq9d1efe9u/nsdcom-150716.apk?dl=0

NSDC Source code ( buildable with Android Studio )
https://www.dropbox.com/s/u2k7msr67f8tqtf/nsdc_archive_150716.zip?dl=0

2015-07-16
NSD.Lib ver 1.26(20150712)をベースにした。


■nscコンパイル方法
conv_utf8.sh
https://www.dropbox.com/s/4ntlqfl5zanl8iq/conv_utf8.sh?dl=0
Makefile (書き直し済)
https://www.dropbox.com/s/zyx7pyvqiufkeer/Makefile?dl=0
nsc ver 1.26 utf-8 変換済みソースコード
https://www.dropbox.com/s/clxo6smme5jfwoa/nsc_utf8_src_150716.zip?dl=0

1. conv_utf8.shをnsdl126/srcに置く

2. シェル(ターミナルなど)でnsdl126/srcまで移動

3. conv_utf8.shを実行する

4. Makefileを次からコピーする

makeを実行する。
マルチコアの場合、-j4など、並列実行オプションをオススメ。

■警告の問題
nscはコンパイル時にいくつかの警告が出ます。
この警告の意味と対処方法をここでは解説します。

例1:

Patch.cpp:123:5: warning: conversion from string literal to 'char *' is
deprecated [-Wc++11-compat-deprecated-writable-strings]


現在では"char *"(charのポインタ)型への文字列の代入は推奨されないという意味です。

解決方法としては、const char *にして非破壊にする、もしくはstrcpyを利用する仕組みに変更します。
用途によっては後者の方が良いでしょう。

今回はStdAfx.hのCommand_Infoを次のように変更します。

typedef struct {
const char *str;
int id;
} Command_Info;



例2:

Envelop.cpp:25:2: warning: field 'f_Use' will be initialized after field 'm_id'
[-Wreorder]



C++にはメンバイニシャライザ(もしくは初期化リスト)と呼ばれているものがあり、
次のような形でメンバ変数を初期化できます。

test::test():hoge("hoge!"), fuge(-1) 
{ }


この方法はコンストラクタで初期化をする一つの方法です。
ただし、メンバ変数の宣言順でないといけないというルールがあり、
ルールに反していると警告が出ます。
この場合は、初期化リストの順番を変えます。

例3:

Option.cpp:126:17: warning: comparison between NULL and non-pointer
('int' and NULL) [-Wnull-arithmetic]


int型にはNULLを代入しない!
NULLはポインタのための物です。あと、NULLは処理系によっては0では無いので注意しましょう。


例4:

MusicItem.cpp:91:4: warning: delete called on 'MusicItem' that has virtual
functions but non-virtual destructor [-Wdelete-non-virtual-dtor]


virtualというのは継承のための仕組みで、virtualを付けると
関数をクラスを継承する際に上書きできる、仮想関数となります。

「virtualな関数がある=そのクラスは継承を意識している=デストラクタもvirtualにする必要がある」
ということのようです。
今回の場合、MusicItemは現在のコードを見る限り、継承はされなさそうだったのでvirtualを外しました。
スポンサーサイト

コメント

非公開コメント

プロフィール

BouKiCHi

Author:BouKiCHi
ABOUT ME
MAIL:alf_byncyou at hotmail.com

WEB:http://clogging.web.fc2.com/
TWITTER:@bkc_alf

月別アーカイブ

FC2カウンター

ブロとも申請フォーム

ブログ内検索