簡體   English   中英

代碼在ideone中編譯,但不在gcc中編譯

[英]Code compiles in ideone but not with gcc

我寫了以下代碼:

#include <iostream>
using namespace std;

int main()
{
    int v()
    return 0;
}

我在ideone中運行它,並且編譯成功。 我的計算機上的文件test1.cpp具有相同的代碼,我運行了g++ test1.cpp ,但出現以下錯誤:

./test1.cpp: In function ‘int main()’:
./test1.cpp:7:2: error: a function-definition is not allowed here before ‘return’

為什么要發生這種情況? 這是一個錯誤嗎? 我正在使用linux mint,gcc版本4.7。

這通常被稱為C ++最煩人的解析。 當你做類似的事情

int f();

編譯器將此作為函數原型讀取,並聲明一個返回int的函數f 如果您使用的是C ++ 11,則應改用

int f{}; // f initialized to 0

如果您不使用C ++ 11,請確保立即初始化變量。

您在這里缺少分號:

 int v()
        ^

應該:

 int v() ;

這是一個函數聲明,雖然不清楚這是什么目的。 如果要初始化v則可以執行以下操作:

 int v(0) ;

或在C ++ 11中

 int v{0} ; 

你忘了分號之后

int v();

當您使用4.7時,Ideone將gcc 4.8.1用於您的代碼(如您在自己的鏈接中所見)

關於C ++ 11的實現,有幾個區別 ,顯然,它受看起來像函數代用的行的影響。

暫無
暫無

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

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