2017-07-20 12 views
-7

問題は次の問題です。私は働いているリポジトリと、コードを書く2台のコンピュータがあります。昨日、私はこのコンピュータの1つで動作するプログラムを作ってから、自分のリポジトリにプッシュしました。今日私はこのリポジトリの内容をダウンロードしましたが、コンパイルはしません。cでのプログラミングはオペレーティングシステムによって異なります

コードが私のOSに依存する可能性があります(OSXと他のUbuntuがあるマシン)。 [OK]を

おかげ

は、ここでのコードは次のとおりです。

#include <stdio.h> 

enum chess {W, BL, WK, WQ, WP, WR, WH, WB ,BK, BQ, BP, BR, BH, BB}; 
static const char *chess_string[] = {"O", "X", "WK", "WQ", "WP", "WR", "WH", "WB" ,"BK", "BQ", "BP", "BR", "BH", "BB"}; 
typedef enum chess chess; 

enum chess_letter {A,B,C,D,E,F,G,H}; 
static const char *chess_letter_string[] = {"A","B","C","D","E","F","G","H"}; 
typedef enum chess_letter chess_letter; 

const int x=8; 
const int y=8; 

chess table [x][y]; 

void init_table(int x, int y, chess arr[x][y]){ 

    int i,j; 

    int c=0; 


    for(i=0;i<x;i++){ 
     for(j=0;j<y;j++){ 
      if(c==1){ 
       c=0; 
       arr[i][j]=BL; 
      }else{ 
       c=1; 
       arr[i][j]=W; 
      } 
     } 
     if(c==1){ 
      c=0; 
     }else{ 
      c=1; 
     } 
    } 
} 

void print_table(int x, int y, chess arr[x][y]){ 

    int i; 
    int j; 

    printf(" "); 
    for(i=0;i<x;i++){ 
     printf("%s ",chess_letter_string[i]); 
    } 
    printf("\n"); 
    for(i=0;i<x;i++){ 
     printf("%d ",i+1); 
     for(j=0;j<y;j++){ 
      printf("%s ",chess_string[arr[i][j]]); 
     } 
     printf("\n"); 
    } 

} 

int main(){ 

    init_table(x,y,table); 
    return 0; 
} 

それはOSXで動作しますが、それはUbuntuのではありません。これはエラーです:

chess.c:14:7: error: variably modified ‘table’ at file scope 
chess table [x][y]; 
    ^
chess.c:14:7: error: variably modified ‘table’ at file scope 

gccを使用してコンパイルします。

gcc chess.c -o chess 
+3

OS固有の機能を使用する場合は、もちろんコードはオペレーティングシステムによって異なります。また、基本的には、UNIXの[BSD](https://en.wikipedia.org/wiki/Berkeley_Software_Distribution)(そのうちのmacOSは変種)と[SYSV](https://en.wikipedia)の2種類があります.org/wiki/UNIX_System_V)(Linuxのほとんどは継承しています)。 2つのバリエーションの間には小さな違いがあり、問題につながる可能性があります。詳細がなくても(できれば、[最小限の完全で実証可能な例](http://stackoverflow.com/help/mcve))、より具体的にすることは不可能です。 –

+1

非常に有り得るかもしれませんが、少しの詳細で質問に答えることは不可能です。いくつかのコードとエラーを共有できますか? – Mureinik

+3

OS固有の関数を使用しない場合でも、コンパイラ固有の拡張機能**に依存する場合があります。 *標準C *のサポートは、コンパイラによって異なります。あなたが間違っているかもしれないことに答えることは不可能です。 – StoryTeller

答えて

0

これは単なるバージョンの問題でした。

関連する問題