[英]C Program Won't Compile in Visual Studio 2010
我有一個簡單的C程序,可以在Linux上通過命令行輕松地進行編譯,但是希望使用Visual Studio調試該程序,以便可以更輕松地查看其功能,但無法對其進行編譯。
我創建了一個新的cpp Win32控制台應用程序。 添加了我的.c和.h文件,但我無法對其進行編譯。 我收到100多個錯誤,這些錯誤似乎主要是紅色鯡魚。 例如,我看到一個錯誤,說我可以在之前的行中看到聲明的變量時就沒有聲明該變量。 例如:
int i;
for (i = 0; i < unpacked_length; i++)
{
在“ for”行上,我收到一個錯誤:“錯誤C2065:'i':未聲明的標識符”
所以顯然還有其他事情。 似乎合法的一個錯誤是此錯誤:
static unsigned char* Base64_Charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
IntelliSense:類型“ const char *”的值不能用於初始化“ unsigned char *”類型的實體
由於這在通過命令行進行編譯時有效,因此我不知道為什么Intellisense在這里會給出此錯誤,除非該編譯器與我通過命令行使用的其他規則具有不同的規則。 我大約15年沒有做過C語言,也不知道這在編譯器中是否可能有所不同,或者這里是否還有其他問題。
源中唯一包含的是:
#include "dtcrypt.h"
#include <string.h>
#include <stdlib.h>
感謝任何幫助!
Visual Studio 2010僅支持ANSI C(aka C89),不支持更現代的C99或C11語言標准。 ANSI C要求您在函數頂部聲明所有變量,不能在使用它們之前在函數中間定義它們。 因此,嘗試像這樣重寫代碼:
void my_function()
{
/* Variable declarations go here */
int i;
...
/* Now teh codez */
for (i = 0; i < unpacked_length; i++)
{
...
}
}
對於第二個錯誤,Intellisense抱怨說它無法將const char
指針轉換為const unsigned char
指針。 字符串文字的類型為char[]
(字符數組),並且char
默認為帶符號的。 因此,您應該將變量聲明為const char *
類型,而不是const unsigned char *
。 或者,您可以忽略它,因為它不是編譯器錯誤,但是在某些警告級別是警告。
char
是否簽名是Visual C ++中的編譯器設置。 將其更改為unsigned以匹配預期的GCC環境。 項目屬性,C / C ++,語言。
至於循環中的i
,必須有一些您未顯示的額外信息。 這兩條粘貼的線在我看來很干凈。
就是說,我在VC ++和GCC之間移植代碼有豐富的經驗-幾乎沒有。
與其搞亂編譯器設置,不如將其強制轉換為“ unsigned char *”
例如:unsigned char * Base64_Charset =(unsigned char *)“ ABCDEFG”;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.