c++趣味之变量名,颠覆所有教科书的VisualStudio

GCC不参与这次的趣味。

所有的教程都会告诉你,c++的变量名,类名,函数名都应该是字字母或下划线开头的字母、数字、下划线组合,像这样:

int _abc123;

实际上,VisualStudio并不遵守这个规范,而是更宽泛,这些都可以:

#include <stdio.h>
#include <tchar.h>
#define 如果 if
#define 打印 printf
#define 返回 return
#define 开始 {
#define 结束 }
#define 主函数 _tmain
#define 整数 int
//纯中文C++程序设计
整数 主函数(整数 参数, _TCHAR* argv[])
开始
 如果(1>0)打印("1");
 打印("Fyter 打印%d", 参数);
 返回 0;
结束

这是一个可以在VS下编译通过的程序。

所以对于这样的编译器,变量名应该是:

不允许非可视字符,像tab,\n,\r...

不允许运算符,像=-+*/...

不允许关键字,像const,int,class...

以外的任意字符

时间: 2024-12-16 20:58:42

c++趣味之变量名,颠覆所有教科书的VisualStudio的相关文章

将变量名变为字符串

将变量名 变为字符串的方法,很神奇,今天刚发现 #include <iostream> using namespace std; #define _showMem(str,v) showMem(#str,v) struct student { string name; int age; char sex; }; void showMem(const char * str,int v) { cout<<str<<" "<<v<<

获取变量名字符串

需求特殊..想要获取变量或者任何实体的变量名字符串 譬如:  DateTime.Now 就得到 "Now" string abcccc= "123"; 就得到 "abcccc" 查找了很久..未果.. 最终请教高人..跟我说: "很简单啊, nameof " 实验结果却是可行.. 高人另外指点..nameof只有在FrameWork4.5.1以上才能使用.. 并且只有在VS2015中才能编译.. 真是  难者不会, 会者不难

模块的创建及变量名

# -*- coding: utf-8 -*- #python 27 #xiaodeng #模块的创建 #任何的.py文件都可以被认为是一个模块,在模块的顶层指定的所有变量名都会变成其属性,并可以导出供客户端使用 #module1.py def printer(x): print x ''' import module1 #导入该文件内的内容,创建一个拥有一个属性的模块对象,变量名printer,他引用了一个函数对象 #通俗点理解就是:在py文件中,所有的def函数其实也都可以理解为一个变量名

js中变量名提升和函数名提升

首先,js中变量没有块级作用域,但是有函数作用域,即只有函数可以约数变量的作用域. 并且,函数的实质也是一个变量,所以可以改变它的值,即赋值.所以变量名提升和函数名提升非常相像. 1.变量名的提升发生在函数内部.看下面的例子.说明:第一个因为弹出undefined,相当于在上面定义了var num;因为函数内部,定义了var num=20:就相当于在一开始定义了var num;这就是变量名的提升. var num = 10; function func() { alert(num); //und

ORA-01036: 非法的变量名/编号 解决方案

今天又一次遇到了 ORA-01036: 非法的变量名/编号 的问题,之前在项目中也遇见过这个问题,但是具体怎么解决的忘记了,今天又是遇见了,花了半个小时才解决.我今天遇到的情况是这样的: 存储过程中有这样一个参数:p_first_tree_name,单独测试存储过程的时候没出错,但是程序调用的时候就会出现  ORA-01036: 非法的变量名/编号  的错误,我的直觉是参数名不规范,后来我将这个参数改为 P_firstname之后问题解决了,所以我认为这种问题是命名不规范或冲突导致的.

JS怎么动态命名变量名

[摘要]本文是对JS怎么动态命名变量名的讲解,对学习JavaScript编程技术有所帮助,与大家分享. 1.用eval,例子: 1 2 3 4 5 6 7 <script> var Thread_num=5; for(var i=1;i<=Thread_num;i++){ eval("var set_" + i + "=" + i); } alert(set_5); </script> 2.方法1占内存,建议用数组代替 1 2 3 4

如何通过from语句调用模块的变量名?

# -*- coding: utf-8 -*- #python 27 #xiaodeng #如何通过from语句调用模块的变量名? #my.py def printer(x): print x #如何通过from语句调用模块的变量名? #方法一: from my import printer #方法二 #from my import * printer('xiaodeng')

规范命名:变量名的力量

变量名的力量 命名对于编写程序来说尤为重要,也许我们喜欢偷工减料使用一些很短的变量名,如下标i,j等,或者temp临时变量,但到头来我们还是要为这些许的偷懒付出沉重的代价,往往在调试自己刚刚写好的代码时就已经不知道刚才自己的意图.更何况每个程序都不可能只是给自己阅读的.下面是我在阅读<code complete>时的一些体会 使用what而不是how 一个好的名字本身应该清楚的描述对象本身,而不是反映某些方面,如一条员工数据记录的命名,employeeData就要比inputRec来的好,后者

指针、变量名、指针所指向的内存

1.和在使用一个数据之前必须要对数据进行初始化一样,否则可能会使得数据的值不确定,那就会给程序埋下很大的隐患,在使用指针之前也必须要对指针进行”初始化“例程1.1 #include<stdio.h> int main(void) { int *x; *x = 3; return 0; } 这样的代码可能会出现段错误,因为x指针不知道会指向哪一块内存,使用*x=3来更改那块内存的数据有可能访问到非法内存导致段错误,当然也有可能因为没访问到非法内存而没有产生段错误,但是一个健壮的程序不允许存在这样