当前位置: 技术问答>linux和unix
初哥请教大牛为什么出这个错误提示,怎样修改?
来源: 互联网 发布时间:2014-12-16
本文导语: warning:newline not last charater in file ===============push_button.c============ #include #include #include main( argc,argv) int argc; char *argv[]; { Widget toplevel,button; XmString string; void callback...
warning:newline not last charater in file
===============push_button.c============
#include
#include
#include
main( argc,argv)
int argc;
char *argv[];
{
Widget toplevel,button;
XmString string;
void callback_handler();
toplevel=XtInitialize(argv[0],"MotifButton",NULL,0,&argc,argv);
string=XmStringCreateSimple("Push_button");
XtAddCallback(button,XmNactivateCallback,callback_handler,NULL);
XtManageChild(button);
XtRealizeWidget(toplevel);
XtMainLoop();
}
void callback_handler(widget,client_data,callback_data)
Widget widget;
caddr_t client_data,callback_data;
{
printf("Push_button is pressed.");
}
==========end of push_button.c==============
cc -o push_button push_button.c -lXm -lXt -lX11
|
1、运行时出现段错误,是因为你的button没有创建,加一句就可以了。
button = XmCreatePushButton( toplevel, "Push_Button", NULL, 0 );
2、callback函数中printf可能在程序退出后才会打印输出,需要刷新标准输出0;
fflush (0);
3、warning:newline not last charater in file 是一个警告,可以不管它。从字面上看应该是说文件最末一行没有新行,不过用gcc编译时并没有这样的信息,
可能和你使用编译器有关。
#include
#include
#include
main( argc,argv)
int argc;
char *argv[];
{
Widget toplevel,button;
XmString string;
void callback_handler();
toplevel=XtInitialize(argv[0],"MotifButton",NULL,0,&argc,argv);
string=XmStringCreateSimple("Push_button");
button = XmCreatePushButton( toplevel, "Push_Button", NULL, 0 );
XtAddCallback(button,XmNactivateCallback,callback_handler,NULL);
XtManageChild(button);
XtRealizeWidget(toplevel);
XtMainLoop();
}
void callback_handler(widget,client_data,callback_data)
Widget widget;
caddr_t client_data,callback_data;
{
printf("Push_button is pressed.");
fflush (0);
}
button = XmCreatePushButton( toplevel, "Push_Button", NULL, 0 );
2、callback函数中printf可能在程序退出后才会打印输出,需要刷新标准输出0;
fflush (0);
3、warning:newline not last charater in file 是一个警告,可以不管它。从字面上看应该是说文件最末一行没有新行,不过用gcc编译时并没有这样的信息,
可能和你使用编译器有关。
#include
#include
#include
main( argc,argv)
int argc;
char *argv[];
{
Widget toplevel,button;
XmString string;
void callback_handler();
toplevel=XtInitialize(argv[0],"MotifButton",NULL,0,&argc,argv);
string=XmStringCreateSimple("Push_button");
button = XmCreatePushButton( toplevel, "Push_Button", NULL, 0 );
XtAddCallback(button,XmNactivateCallback,callback_handler,NULL);
XtManageChild(button);
XtRealizeWidget(toplevel);
XtMainLoop();
}
void callback_handler(widget,client_data,callback_data)
Widget widget;
caddr_t client_data,callback_data;
{
printf("Push_button is pressed.");
fflush (0);
}
|
你这个.c文件是不是从windows上copy过来的?
|
把这种写法
main( argc,argv)
int argc;
char *argv[];
改为
int main( int argc,char *argv[])
同时将callback_handler也改一改试试。
main( argc,argv)
int argc;
char *argv[];
改为
int main( int argc,char *argv[])
同时将callback_handler也改一改试试。
|
在文件末尾加一空行。
Linux下C文件好像必须以空行结尾,否则编译不过去(不知道为什么,编译器的问题?)
好像Windows下也有这样的问题,我曾用过一个开发工具,它会自动在文件末尾加一空行。
Linux下C文件好像必须以空行结尾,否则编译不过去(不知道为什么,编译器的问题?)
好像Windows下也有这样的问题,我曾用过一个开发工具,它会自动在文件末尾加一空行。
|
gcc 要求文件必须以一个空行为结束标志,所以在你的文件最后加上一个空行