[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决] 求解,用中文作为变量名字,进行赋值操作?

本帖最后由 zzz19760225 于 2024-8-31 13:28 编辑

求解,用中文作为变量名字,进行赋值操作?(扩大使用范围,在中文变量后面加数字编码,char 图片123,行不行?)
变量用中文,便于小白理解和记忆。

win10+vc6.0+easyx
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <windows.h>
  5. #include <graphics.h>
  6. #include<stdio.h>
  7. #include<string.h>
  8. #define 图片变量 "tupianbianliang"
  9. int main()
  10. {
  11. initgraph(1200, 700);
  12. char 图片变量123=1.jpg;
  13.              IMAGE img;
  14.              loadimage(&img,图片变量123,1200,500);
  15.              putimage(0, 0, &img);
  16.              getch();
  17. closegraph();
  18. return 0;
  19. }
复制代码
编译通过,实际是上一个软件执行成功的影子,虚假的,换了一个新的,就显示各种错误
  1. --------------------Configuration: a3b3 - Win32 Debug--------------------
  2. a3b3.exe - 0 error(s), 0 warning(s)
复制代码
  1. Deleting intermediate files and output files for project 'a3b3 - Win32 Debug'.
  2. --------------------Configuration: a3b3 - Win32 Debug--------------------
  3. Compiling...
  4. a1b18.cpp
  5. d:\dos\c\a1b18.cpp(9) : error C2007: #define syntax
  6. d:\dos\c\a1b18.cpp(14) : error C2018: unknown character '0xcd'
  7. d:\dos\c\a1b18.cpp(14) : error C2018: unknown character '0xbc'
  8. d:\dos\c\a1b18.cpp(14) : error C2018: unknown character '0xc6'
  9. d:\dos\c\a1b18.cpp(14) : error C2018: unknown character '0xac'
  10. d:\dos\c\a1b18.cpp(14) : error C2018: unknown character '0xb1'
  11. d:\dos\c\a1b18.cpp(14) : error C2018: unknown character '0xe4'
  12. d:\dos\c\a1b18.cpp(14) : error C2018: unknown character '0xc1'
  13. d:\dos\c\a1b18.cpp(14) : error C2018: unknown character '0xbf'
  14. d:\dos\c\a1b18.cpp(14) : error C2513: 'char' : no variable declared before '='
  15. d:\dos\c\a1b18.cpp(14) : error C2059: syntax error : 'bad suffix on number'
  16. d:\dos\c\a1b18.cpp(14) : error C2146: syntax error : missing ';' before identifier 'jpg'
  17. d:\dos\c\a1b18.cpp(14) : error C2065: 'jpg' : undeclared identifier
  18. d:\dos\c\a1b18.cpp(17) : error C2018: unknown character '0xcd'
  19. d:\dos\c\a1b18.cpp(17) : error C2018: unknown character '0xbc'
  20. d:\dos\c\a1b18.cpp(17) : error C2018: unknown character '0xc6'
  21. d:\dos\c\a1b18.cpp(17) : error C2018: unknown character '0xac'
  22. d:\dos\c\a1b18.cpp(17) : error C2018: unknown character '0xb1'
  23. d:\dos\c\a1b18.cpp(17) : error C2018: unknown character '0xe4'
  24. d:\dos\c\a1b18.cpp(17) : error C2018: unknown character '0xc1'
  25. d:\dos\c\a1b18.cpp(17) : error C2018: unknown character '0xbf'
  26. d:\dos\c\a1b18.cpp(17) : error C2059: syntax error : ','
  27. 执行 cl.exe 时出错.
  28. a3b3.exe - 1 error(s), 0 warning(s)
复制代码
不知道怎么,原本a3b3.hanzi,就打开来打开去的复制来复制去,变成只编译a1b18的文件了。

执行exe文件时(编辑器界面选择,实际debug文件夹里没有exe),
弹窗提示"The file does not exist. Do  you want to build it?"(文件不存在。你想建造它吗?),
然后点击,弹窗“无法执行程序”。

不行吧,宏指令#define是根据token来的 ,中文加数字应该是一个整体,就算能让你#define,也替换不了里面的中文

TOP

回复 1# zzz19760225
不行,至少您这样不行。
《C Primer Plus》中有这样一个实例,您可以看看
  1. // glue.c -- 使用 ## 运算符
  2. #include <stdio.h>
  3. #define XNAME(n) x ## n
  4. #define PRINT_XN(n) printf("x" #n " = %d\n", x ## n);
  5. int main(int argc, char* argv[])
  6. {
  7.     int XNAME(1) = 14; // 变成 int x1 = 14;
  8.     int XNAME(2) = 20; // 变成 int x2 = 20;
  9.     int x3 = 30;
  10.     PRINT_XN(1); // 变成 printf("x1 = %d\n", x1);
  11.     PRINT_XN(2); // 变成 printf("x2 = %d\n", x2);
  12.     PRINT_XN(3); // 变成 printf("x3 = %d\n", x3);
  13.     return 0;
  14. }
复制代码
另外,给您两点建议:
1.换更新的编译器,Visual C++ 6.0 实在是太老了,连 C99 都不支持。
2.买一本(或从网上下载一本)《C Primer Plus》作为入门的教程,仔细读几遍。
Why join the navy, if you can be a pirate? - Steve Jobs

TOP

本帖最后由 zzz19760225 于 2024-8-31 13:26 编辑

回复Five66
回复HOPE2021
谢谢两位老师的指教。
我原本以为C++丙正正类编程语言汉化,可以将一部分变量英文与结构功能命令的英文区别开来,用中文为程序结构节点阅读,相对简化一些。想简单了,考虑得有个VC2022才好。方便在编辑器上可以看出一部分程序制作里的问题,相对减轻问题的度和量。
装了VC2022,原来以前安装过,象网络软件,不舒服。就删了又找2019,2015,一路下来,找了个2013。
书也有(stephen prata 著,云巅工作室 译,第五版中文版),就是学习能力有问题,以前看书能看进去一些,以想象为主,看为补充。现在是基本看不进去,看了就想睡觉。感觉不如网络上搜索做事情点滴内容,有兴趣追着赶。要小而单元化的事情,可以完成,又不超出时下阶段的能力极限才好,这样动手步进。

另外一个是指针的问题想麻烦咨询一下。
一般C语言都有内存占用的指针什么麻烦,会泄漏什么的,是个麻烦事情。
以前想用TC2.0做象素点阵手工文字,3X5象素点阵的数字,全用指针,顺着一个线路跑到结尾换行重复。怎么用的也忘记了,就是记得后来TC2.0编辑器打不开了,应该就是这个什么内存占用光了,因为没有free指针的释放内容。

这次想下FLASH,没下到或没有使用环境,到处是商业收割的围剿,就考虑连环画模式软件,简单的够用就可以。结果里面用到的文本处理要指针,所以就产生指针恐惧。
搜索了指针的处理,产生两类问题:
一是程序指针内存式问题,全部翻新的办法;
不怕程序死了,全部翻新一下就好了。
问题一,有没有这种翻新的方式,是删除,再安装软件,还是软件里有什么内部清除的,还是电脑操作系统进行内存清理什么?
二是几种里考虑怎么选一种通用的。
1
没有malloc,就不需要free的配套处理。
2
int *a;
free(a);
3
int *a = NULL
a=123;
if(a != NULL) free(a);

问题二,是不是见*星号,就可以用int *a = NULL,搭配if(a != NULL) free(a);,进行通用处理啊?

TOP

问题一不清楚,内存(ram)一般退出程序就会自动清除了,清除不了的系统重启一下就焕然一新了,打不开大概是软件问题,试试删除重装软件

问题二一般就是没有动态内存分配(malloc、calloc、realloc),就不需要free的配套处理。操作系统api也有可能动态分配内存,但是使用操作系统的api进行free,其他函数或api只要了解有没有动态分配内存就行了

TOP

回复 5# Five66

谢谢老师帮助回答两个问题。
主要是第二个指针问题概念,估计还得结合搜索信息,尝试操作练习中去强化理解认识,否则感觉想象不出头绪来。

TOP

回复 6# zzz19760225


C语言里,指针就是的一个地址,一个内存(ram)地址
指针类型就是让编译器知道用何种方式解读这个地址的及其之后的内容,知道之后就编译器能编译生成正确的代码了

TOP

返回列表