簡體   English   中英

在C中使用main函數?

[英]Using main function in C?

我正在創建一個主要函數來測試名為mchar的C函數的限制。 mchar將char作為參數。

int main ()
{
    mchar();
    mchar('A');
    mchar('\n');
    mchar('');
    mchar(NULL);
}

我正在嘗試考慮所有可能導致該方法出錯的用例。 所有這些都能正確調用嗎? 還有我所缺少的用例嗎?

只有256個字符,因此您可以輕松地使用所有字符進行調用:

#include <limits.h>

int main(void)
{
    for (int c = CHAR_MIN; c <= CHAR_MAX; ++c) {
        mchar(c);
    }

    return 0;
}

如果您特別想測試“有趣的”字符,則可以嘗試這些字符。

mchar('\'');    // Single quote
mchar('"');     // Double quote
mchar('\\');    // Backslash

mchar(' ');     // Space
mchar('\t');    // Tab
mchar('\n');    // Line feed
mchar('\r');    // Carriage return

mchar('\0');    // NUL
mchar('\b');    // Backspace
mchar('\f');    // Form feed
mchar('\v');    // Vertical tab
mchar('\a');    // Bell (alert)

關於你的問題

所有這些都能正確調用嗎?

首先

mchar('A');
mchar('\n');

這里的'A','\\ n'是有效字符。 所以這將正常工作

mchar('');

是非法的,並且會給出編譯時錯誤。 例如:對於gcc,顯示的錯誤是空字符常量。

mchar();

也是非法的,因為函數期望使用char作為參數,但是您沒有傳遞任何參數。 您將得到一個編譯時錯誤(類似“ 函數參數太少”之類的東西)。

mchar(NULL);

會在正常情況下進行編譯(如果您未設置任何嚴格的編譯器標志,則會編譯),但會出現警告。

警告:整數轉換的不兼容指針,將“ void *”傳遞給類型為“ char”的參數;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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