真的是活见鬼了,这个问题怎么回事?

happycock 2003-07-21 03:58:02
#include <stdio.h>
typedef struct
{
char c1;
char c2;
int n;
} stru;

void main()
{
printf("%d %d %d", sizeof(char), sizeof(int), sizeof(stru));
char s[] = "%.16f";
printf(s,1.1);
}
在VC6中死活就不能编译,
F:\MyProject\testff\aa.c(12) : error C2143: syntax error : missing ';' before 'type'
F:\MyProject\testff\aa.c(13) : error C2065: 's' : undeclared identifier
F:\MyProject\testff\aa.c(13) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int '
F:\MyProject\testff\aa.c(13) : warning C4024: 'printf' : different types for formal and actual parameter 1
Error executing cl.exe.

testff.exe - 2 error(s), 2 warning(s)
如果把main()中的第一句注释掉,或者把后两句注释掉,都能通过。
...全文
83 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bandry 2003-07-21
  • 打赏
  • 举报
回复
是啊,把char s那一行放到main里面的第一行,应该就可以了
happycock 2003-07-21
  • 打赏
  • 举报
回复
终于明白了,确如steedhorse(晨星)所说,没留神把TC下的一个文件拿来修改,改完后怎么编译也通不过。原来是C的程序文件,马虎马虎,谢谢大家。
没写过printf(s,...);这样的代码吗?printf的原型printf(const char *,...)
看来C的常用语句还是有人没明白啊。
doer_ljy 2003-07-21
  • 打赏
  • 举报
回复
同意同意
还是steedhorse(晨星) 一针见血
:)
1cs1ak1 2003-07-21
  • 打赏
  • 举报
回复
这还有点像宏替换了。
倒。
#define s "%.16f"

晨星 2003-07-21
  • 打赏
  • 举报
回复
C程序不允许“随时随地”的变量声明。
晨星 2003-07-21
  • 打赏
  • 举报
回复
要么把你的扩展名“.c”改成“.cpp”,要么把所有的变量声明都挪到函数体的开始部分。
wowowowo 2003-07-21
  • 打赏
  • 举报
回复
vc++7中可以通过
1 4 81.1000000000000001
1cs1ak1 2003-07-21
  • 打赏
  • 举报
回复
sorry
错了
1cs1ak1 2003-07-21
  • 打赏
  • 举报
回复
printf(s,1.1); //什么东东
打印字符串这样printf("%s", s);
JJZHK 2003-07-21
  • 打赏
  • 举报
回复
不对吧,我的可以通过阿。
结果是:
1 4 81.1000000000000001
也就是说第一个printf输出:1 4 8
后一个输出:1.1000000000000001
vc6.0通过阿
ZhangYv 2003-07-21
  • 打赏
  • 举报
回复
嗯,我在DEV-C++下可以啊.

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧