2017-07-20 22 views
-7

Das Problem ist das nächste. Ich habe ein Repository, wo ich arbeite, und zwei Computer, wo ich code. Gestern habe ich ein Programm erstellt, das auf einem dieser Computer funktioniert, dann habe ich einen Push in mein Repository gemacht. Heute habe ich den Inhalt dieses Repository heruntergeladen, aber es kompiliert nicht.Programmierung in c hängt vom Betriebssystem ab

Es ist möglich, dass der Code von meinem os abhängt (eine Maschine OSX und die andere Ubuntu).

Dank

Ok, hier ist der Code:

#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; 
} 

Es in OSX funktioniert, aber es funktioniert nicht in Ubuntu. Dies ist der Fehler:

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 

Ich benutze gcc, um es zu kompilieren.

gcc chess.c -o chess 
+3

Wenn Sie OS-spezifische Funktionen verwenden, dann hängt der Code natürlich vom Betriebssystem ab. Beachten Sie auch, dass es grundsätzlich zwei Varianten von Unix gibt, [BSD] (https://en.wikipedia.org/wiki/Berkeley_Software_Distribution) (von denen macOS eine Variante ist) und [SYSV] (https: //en.wikipedia .org/wiki/UNIX_System_V) (von der Linux meist von erbt). Es gibt kleine Unterschiede zwischen den beiden Varianten, die zu Problemen führen können. Ohne weitere Details (und vorzugsweise ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve)) ist es unmöglich, genauer zu sein. –

+1

Sehr wahrscheinlich, aber es ist unmöglich, eine Frage mit so wenig Details zu beantworten. Können Sie etwas Code und den Fehler teilen, den Sie bekommen? – Mureinik

+3

Auch wenn Sie keine betriebssystemspezifischen Funktionen verwenden, hängt dies möglicherweise von compilerspezifischen ** Erweiterungen ** ab. Oder die Unterstützung für * Standard C * unterscheidet sich zwischen den Compilern. Es ist unmöglich zu beantworten, was Sie möglicherweise falsch gemacht haben. – StoryTeller

Antwort

0

Es war nur eine Version Problem.

Verwandte Themen