BigAdmin System Administration Portal
Sun Studio 11 以前の 左辺値キャストの動作時の注意事項
Print-friendly VersionPrint-friendly Version

Sun Studio C ユーザーズガイドには K&R Sun C と Sun ISO C の 非互換性の説明として、K&R C では左辺値(lvalue)としての キャストをサポートし、ISO C ではサポートしない旨の記載があります。 下記を参照してください。
Sun Studio 12 Collection - Japanese > Sun Studio 12: C ユーザーズガイド > K&R Sun C と Sun ISO C との間の非互換性
しかし、Sun Studio 11 以前の C コンパイラの動作の一部では 基本モードオプションを指定しても上記に従っていませんので、 その部分について説明いたします。

尚、基本モードオプションについては下記を参照してください。
Sun Studio 12 Collection - Japanese > Sun Studio 12: C ユーザーズガイド > 第 6 章 ISO C への移行


左辺値キャストを含む下記サンプルコードを Sun Studio C コンパイラで コンパイルしてみます。
sample.c

#include 

int main(){
  int i;

  (int)i=123;
   printf("%d\n",i);
}
  1. コンパイラオプション -Xa, -Xc (ANSI/ISO C 準拠)を指定した場合
    Forte Developer 6 Update 2 から Sun Studio 11 実行モジュールが生成される
    Sun Studio 12 実行モジュールが生成されない
    上記の結果では Sun Stuido 12 は C ユーザーズガイドに従った動作を していますが、Sun Stuido 11 以前は C ユーザーズガイドに従った動作を していません。

  2. コンパイラオプション -Xs, -Xt (K&R C 準拠)を指定した場合
    Forte Developer 6 Update 2 から Sun Studio 11 実行モジュールが生成される
    Sun Studio 12 実行モジュールが生成される (*注1)
    上記の場合、すべての Sun Studio リリースにおいて C コンパイラは C ユーザーズガイドに従った動作をしています。
    *注1 Sun Studio 12 C コンパイラにはこの場合に実行モジュールを生成しないという問題があり、以下のパッチによって修正されています (Bug ID: 6811601) 。パッチが適用されていない場合、Sun Studio 12 C コンパイラは実行モジュールを生成しません。
    • Solaris SPARC 版: 124867-11
    • Solaris x86 版: 124868-10
    • RHEL4, SLES 9 版: 124871-10


    Sun Stuio 11 以前の C コンパイラにおいてオプション -Xa, -Xc を 指定した場合、実行モジュールが生成される動作は本来の動作とは 異なりますので、制限事項としてご案内します。

BigAdmin
  
 
BigAdmin Upgrade Hub