簡體   English   中英

針對此cpp代碼使用cl.exe(Visual Studio 2008)編譯錯誤

[英]Compile error using cl.exe (Visual Studio 2008) for this cpp code

我在此代碼中出現編譯錯誤

    #include<iostream>
    #include<cstdio>
    #include<string>
    using namespace std;
    void main(int argc,char *argv[])
    {
        int i;
        for(i = 0;i<10;i++)
           fprintf(cout,"%d\n",i);
        fprintf(cout,"abc:\n");
        string s;
        cin>>s;
        if(s == "resume") { 
            for(i = 0;i<10;i++)
            fprintf(cout,"%d\n",i);
        }
   }

用於80x86的Microsoft(R)32位C / C ++優化編譯器版本15.00.21022.08版權所有(C)Microsoft Corporation。 版權所有。

try.cpp C:\\ Program Files \\ Microsoft Visual Studio 9.0 \\ VC \\ INCLUDE \\ xlocale(342):警告C 4530:使用了C ++異常處理程序,但未啟用展開語義。 指定/ EHsc

try.cpp(9):錯誤C2664:'fprintf':無法將參數1從'std :: ostr eam'轉換為'FILE *'沒有可用的用戶定義轉換運算符可以執行此轉換,或者該運算符不能叫做

try.cpp(10):錯誤C2664:'fprintf':無法將參數1從'std :: ost ream'轉換為'FILE *'沒有可用的用戶定義轉換運算符可以執行此轉換,或者該運算符無法叫做

try.cpp(16):錯誤C2664:'fprintf':無法將參數1從'std :: ost ream'轉換為'FILE *'沒有可用的用戶定義轉換運算符可以執行此轉換,或者該運算符無法叫做

怎么了?

您正在混合使用C ++和C輸出樣式。 將fprintfs更改為以下形式:

cout << "value is: " << i << "\n";
std::fprintf(stdout, )

std :: cout沒有FILE *類型。

或者,將您的包含更改為:

#include <stdio.h>
#include <string.h>

fprintf()調用

fprintf(stdout,"abc:\n");

那你在說C

您混入C和C ++錯誤。 僅使用1,並堅持下去,直到您了解類型之間的區別。

這是沒有編譯錯誤的代碼:

#include <iostream>
#include <string>

int main()
{
  using namespace std;

  for(int i = 0; i < 10; i++)
    cout << i << '\n';
  cout << "abc" << endl;

  string s;
  cin >> s;
  if(s == "resume") 
    for(int i = 0; i < 10; i++)
      cout << i << '\n';

  return 0;
}

暫無
暫無

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

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