簡體   English   中英

C程序無法在Visual Studio 2010中編譯

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

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