修復 error C2760: syntax error: unexpected token 'identifier', expected 'type specifier'


微軟這個坑貨,白瞎我一早上。

問題復現

用vs2019創建一個工程,然后修改windows sdk 到8.1;結果現有代碼就編譯不通過了,出現以上錯誤。
使用排除法,縮小問題,最終排除到編譯一個僅僅包含#include <windows.h>一行代碼的cpp文件也會出問題。

同樣的代碼,現有工程沒問題,新創建的就有問題。
然后開始對比,屬性頁的各種設置。最后發現有一個不一樣。

property -> c/c++ -> language -> conformance mode

修復

以上屬性設置為no,問題就消失了。

原因

這個編譯選項的官方文檔:https://docs.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance?view=vs-2019
大致意思如下:

  1. 從vs2017 15.5開始默認開啟這個選項
  2. 開啟這個選項后,SDK (10.0.16299.0)之前的sdk版本的頭文件會編譯失敗

工程里面選不同的sdk版本,windows.h頭文件就屬於不同版本的sdk,老的就會編譯失敗。微軟這坑貨


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM