[英]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.