我正在编写一个非常简单的C程序,它的开头是这样的:
#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);
但为第二行提供相同的变量。这是怎么回事?
答案 0 :(得分:4)
投射到const
等于投射到const int
。省略type并且仅设置了qualified时,编译器只假定int
。
只需删除(const)
演员。通过将指向的值声明为const
,您已经做了正确的事。