全ては時の中に…

システム開発全般の技術や開発に役立つツール、プログラミングのサンプルを紹介しています。

C

【C/C++】OpenMpを使う(その壱)

最近は、CPUコアが複数になっているため、通常のアプリケーションでも並列化プログラミングを求められることが増えてきた。
そこで、Visual C++でOpenMpを使った並列プログラミングの実装方法について勉強することにした。

OpenMPを利用するためには、以下の手順を踏む。
1.includeで"omp.h"を読み込む。
2.並列化する処理をOpenMP指示文("#pragma omp"から始まる命令等)を指定し、並列化する処理を処理ブロックで囲む。
 (OpenMP指示文には、いくつかの種類があり、用途によって使い分ける)

まずは、単純な例について記載する。
続きを読む

【C/C++】バイトオーダーの変更

通信を行う場合やファイルに格納するデータのバイトオーダーが決められている場合、バイトオーダーを変更する必要があります。
このような場合に必要となるバイトオーダーの変更方法に説明します。
バイトオーダーには、ビッグエンディアンとリトルエンディアンがあります。

以下、バイトオーダーの説明です。
 ・ビッグエンディアン
   … 最上位のバイトから順番に格納する。
 ・リトルエンディアン
   … 最下位のバイトから順番に格納する

格納する値を1とした場合、以下のように格納されます。
 ・ビッグエンディアン(00-00-00-01)
 ・リトルエンディアン(01-00-00-00)

バイトオーダーの変更には、以下の関数を利用します。
 1)リトルエンディアン→ビッグエンディアンへの変更
  ・u_long htonl(u_long hostlong);
  ・u_short htons(u_short hostshort);
 2)ビッグエンディアン→リトルエンディアンへの変更
  ・u_long ntohl(u_long netlong);
  ・u_short ntohs(u_short netshort);

以下、実装方法です。
続きを読む

【C/C++】コンパイルエラー("xxx" was not declared in this scope)が発生する

C/C++のコンパイル時に以下のコンパイルエラーが発生することがあります。
 "xxx" was not declared in this scope
※ "xxx"の部分には、関数名や変数名が入ります。

このエラーは、該当する関数や変数が有効範囲内で見つからない場合に発生するエラーです。
発生する原因には、以下のようなものがあります。
 1.関数名、変数名が誤っている。
  →スペルミスや大文字小文字の誤り等
 2.必要なヘッダファイルをincludeしていない。
 3.シンボルの定義が複数のファイルで重複している。
  →以下のようなコードがある場合に発生します。
#if !defined "xxxxxxxxxx"
#define "xxxxxxxxxx"
#endif //!defined "xxxxxxxxxx"

※"xxxxxxxxxx"の部分が同じファイルが複数ある場合、上記のエラーが発生する可能性があります。
 (誤ったコードを先に参照すると、後から参照した本来のコードが無視されてしまい、必要な関数や変数が参照できない状態となってしまう)


以下、解決方法です。
続きを読む
Recent Comments
Recent TrackBacks
Profile

ふりっつ

システムエンジニア
取得資格:
 ソフトウェア開発技術者
 MCP(70-290)
メールマガジン:
 【出張版】全ては時の中に…

メールマガジン
メルマガ登録・解除
【出張版】全ては時の中に…
 
 powered by メルマガスタンドmelma! トップページへ
ブログランキング
アクセス解析出会い




にほんブログ村 IT技術ブログへ

にほんブログ村 IT技術ブログ プログラム・プログラマへ

Amazon
スポンサー
HonyaClub.com

PCDEPOT WEB本店/OZZIO

FUJIFILMMALL(フジフイルムモール)

IT 関連資格ならクラムメディア問題集

  • ライブドアブログ