2016-07-25 76 views
-1

我正在写一个非常简单的C程序,它是这样开始的时候:“警告:类型默认为类型名称‘诠释’”声明为const char *

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int 
main(int argc, char **argv){ 

    // check that the program has been invoked correctly 
    if(argc < 3){ 
    fprintf(stderr, "Usage: find_char <string> <string>.\n"); 
    exit(EXIT_FAILURE); 
    } 

    char const *source = (const) (*++argv); 

最后一行,我得到以下警告:

main.c:17:3: warning: type defaults to ‘int’ in type name [enabled by default] char const *source = (const) (*++argv);

我想:

char const *source = NULL; 
source = (const) (*++argv); 

,但给出了同样的v为第二条线而努力。这里发生了什么?

+0

请缩进您的代码。 –

回答

4

铸造到const等于铸造到const int。如果省略type并且只设置了限定条件,那么编译器会假定为int

只要删除(const)演员。通过将指定的值声明为const,您已经做了正确的事情。

+0

谢谢你,让 - 弗朗索瓦 - 这确实有效。许多人感谢你的帮助。 – dmitry

+0

如果它适合你,请接受答案。 –

+0

完成 - 遗憾遗憾。 – dmitry

相关问题