由編譯器問題帶來的編譯錯誤:error: 'nullptr' was not declared in this scope

在使用Makefile進行項目編譯時出現了這個問題,解決的方法是在編譯語句中添加-std=c++11,在鏈接語句不需要添加。

注意: 你的編譯器必須要支持C++11,如果編譯器不支持,請升級你的編譯器或修改程序代碼避開C++11中的纔有的內容!

#"\"代表換行符號,不換行的話,一行太長不方便看

#設置參數
LIB_DIR = 庫的路徑;

#.c編譯生成對應.o文件 (std=c++11 添加在此)
OBJECTS.o : SOURCES.cpp
        g++ -std=c++11 -c SOURCES.cpp -o OBJECTS.o

#.o鏈接庫生成程序文件
#其中:$@指代前面的$(PROGRAM),$<指代後面的$(OBJECTS)
PROGRAM.out : OBJECTS.o
        g++ -o $@ $< -static \ 
        -lavformat -L${LIB_DIR}/libavformat/ \ 
        -lavutil -L${LIB_DIR}/libavutil/ \
        -lpthread -ldl -lz -lm -lrt

以下內容轉載自:

nullptr was not declared in this scope

這個錯誤提示有點迷惑性,意思是nullptr在當前作用域沒有被聲明,就好像是變量沒有聲明一樣的。實際上,nullptr是C++11引入的關鍵字,這個編譯器沒有支持C++11。出現這個錯誤說明你的編譯器沒有支持C++11,至少沒有完整支持C++11。

問題清楚了,就好解決了。解決的方法有兩個方向:

1.設置編譯器或升級編譯器到gcc4.8.1,完全支持C++11

詳細內容請看原文:nullptr was not declared in this scope

2.改代碼,不要使用C++11特性

詳細內容請看原文:nullptr was not declared in this scope

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章