簡體   English   中英

在Visual Studio中編寫C代碼

[英]writing a C code in Visual studio

我在Visual Studio中編寫了一個簡單的函數,以便能夠研究如何在Visual Studio中編寫C項目,但是它出現以下錯誤:

Error   1   error C2275: 'FILE' : illegal use of this type as an expression        
c:\users\henry\documents\visual studio 2010\projects\exc4\exc4\measurement.c    25    
1   Exc4

Error   2   error C2065: 'file' : undeclared identifier   
c:\users\henry\documents\visual studio 2010\projects\exc4\exc4\measurement.c    25  
1   Exc4

  Error 3   error C2065: 'file' : undeclared identifier 
 c:\users\henry\documents\visual studio 2010\projects\exc4\exc4\measurement.c   31     1    
    Exc4
  Error 6   error C2065: 'file' : undeclared identifier 
   c:\users\henry\documents\visual studio 2010\projects\exc4\exc4\measurement.c 39  1   
   Exc4
    Error   9   error C2065: 'file' : undeclared identifier 
   c:\users\henry\documents\visual studio 2010\projects\exc4\exc4\measurement.c 41  1   
    Exc4

   Error    12  error C2065: 'file' : undeclared identifier 
    c:\users\henry\documents\visual studio 2010\projects\exc4\exc4\measurement.c    45  1   
   Exc4
17  IntelliSense: a value of type "void *" cannot be used to initialize an 
     entity of type "Tmeasurement *"    c:\users\henry\documents\visual studio 
      2010\projects\exc4\exc4\measurement.c 99  33  Exc4

在Mac Xcode編譯器上編譯函數時,我從未遇到此錯誤。 希望有人在那里可以解釋為什么未識別語句FILE * file。

Tmeasurement readMeasurements(Tmeasurement a, char *filename)
{
    int filesize, i;
    struct stat st;
    stat(filename, &st);
    filesize = st.st_size;

    a.ArraySize = filesize;
    a.measureArray = (float*)malloc(filesize*sizeof(float));

    FILE *file = fopen(filename, "r+");
    // FILE *file = fopen(filename, "r");
    /*filesize = fread(a.measureArray, 1, filesize, file);
    a.ArraySize = filesize;*/

    if(file==NULL)
    {
        printf("Could not open mea.dat!\n");
        return; 
    }

    for(i=0;  i<102 &&(fgetc(file))!=EOF;i++)
    {
        fscanf(file,"%e",&a.measureArray[i]);
    }

    fclose(file);
    return a;
}

Visual Studio是C89編譯器。

混合聲明和代碼是C99的功能。

不要混合使用聲明和代碼也不要使用Visual Studio :)

Microsoft編譯器僅支持C89標准,因此變量聲明必須在作用域的開頭,然后再聲明任何其他語句。

改成:

Tmeasurement readMeasurements(Tmeasurement a, char *filename)
{
   int filesize, i;
   struct stat st;
   FILE* file;

   ...

   file = fopen(filename, "r+");

   ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM