我正在阅读一本关于 c++ 的书(Ulla Kirch-Prinz 和 Peter Prinz 编写的 C++ 编程完整指南;ISBN:0-7637-1817-3),它提到 isupper()、islower()、isalpha( )、isdigit()、isalnum()、isspace() 和 isprint() 是用于字符分类的宏。
我觉得这种奇怪有两个原因:
在同一本书中,它讨论了如何,即使宏可以有参数,它们本质上仍然只是用定义填充的占位符名称。这看起来很奇怪,因为我不知道有条件地操作什么样的替换文本。这听起来更符合函数或内置操作(如sizeof)。
这似乎也很奇怪,因为我听说有些人称这些函数,而我也听到有些人称它们为宏。
任何解释将不胜感激。我对此比较陌生,所以我仍在努力弄清楚这一切。谢谢你。
我认为我可以学习和改进编程的最好方法之一就是查看各种源代码。我正在查看 Blender 的源代码并注意到有关头文件的一些信息。它们中的大多数#ifndef包括守卫,其中宏被双下划线包围(例如__BMESH_CLASS_H__)。
这让我想到,整个“只是不作出任何以下划线开始在所有”的建议是对于初学者好,但我认为,为了在编程创造我自己的保留标识符时,我应该学习取得进一步进展是和不合适。
我在玩 C 时,我意识到,如果我声明了一堆寄存器变量,这些值不会被覆盖吗?从我从组装中可以看出,微处理器中没有大量寄存器,不足以满足我创建的需求。C 如何保留所有值?
我已经添加sox到我的 PATH 中,它似乎做得很好。如果我打开终端并输入C:\Users\[EXAMPLE USERNAME]>sox,程序将运行所有选项和效果。问题是我似乎play无法上班。我已经试过C:\Users\[EXAMPLE USERNAME]>play file.ogg这给产生错误:'play' is not recognized as an internal or external command, operable program or batch file。我不完全确定这里发生了什么。
我通常会考虑创建一个 PATH 变量,play但正如在这个问题的答案的评论中提到的那样,没有可执行文件,它的sox名称不同。
另外,作为参考,我在 Windows 10 上使用 sox-14-4-2。
因此,我对各种事物的链接感到有些困惑。对于这个问题,我将重点讨论不透明指针。
我将用一个例子来说明我的困惑。假设我有这三个文件:
主程序
#include <stdio.h>
#include "obj.h" //this directive is replaced with the code in obj.h
int main()
{
myobj = make_obj();
setid(myobj, 6);
int i = getid(myobj);
printf("ID: %i\n",i);
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
对象文件
#include <stdlib.h>
struct obj{
int id;
};
struct obj *make_obj(void){
return calloc(1, sizeof(struct obj));
};
void setid(struct obj *o, int i){
o->id = i;
};
int getid(struct obj *o){
return o->id;
};
Run Code Online (Sandbox Code Playgroud)
对象文件
struct obj;
struct obj *make_obj(void);
void setid(struct obj *o, int i);
int …Run Code Online (Sandbox Code Playgroud) 我正在阅读C++:如何编程, Paul 和 Harvey Deitel 的第九版,我在第 114 页发现了一些让我感到困惑的东西。
书中给出了示例代码:
if ( studentGrade >= 90 ) // 90 and above gets "A"
cout << "A";
else
if ( studentGrade >= 80 ) // 80-89 gets "B"
cout << "B";
else
if ( studentGrade >= 70 ) // 70-79 gets "C"
cout << "C";
else
if ( studentGrade >= 60 ) // 60-69 gets "D"
cout << "D";
else // less than 60 gets "F"
cout << "F";
Run Code Online (Sandbox Code Playgroud)
这本书接着说: …