标签:c

什么是未定义的引用/未解析的外部符号错误,我该如何解决?

什么是未定义的参考/未解决的外部符号错误?什么是常见原因以及如何修复/预防它们? 编译C ++程序分为几个步骤,由2.2 指定(Keith Thompson的信用作为参考): 翻译语法规则的优先级由以下阶段指定[见脚注]。 如果需要,物理源文件字符以实现定义的方式映射到基本源字符集(引入行尾指示符的换行符)。[SNIP] 删除反斜杠字符(\)后面紧跟一个新行字符的每个实例,拼接物理源代码行以形成逻辑源代码行。[SNIP] 源文件被分解为预处理标记(2.5)和空白字符序列(包括注释)。[SNIP] […]

C语言 – C ??!??!是什么操符呢?

我看到一行C看起来像这样: !ErrorHasOccured() ??!??! HandleError(); 它编译正确,似乎运行正常。看起来它正在检查是否发生了错误,如果有错误,它会处理它。但我不确定它在做什么或者它是如何做的。看起来程序员正试图表达他们对错误的看法。 我从来没有??!??!在任何编程语言中看到过以前的版本,而且我无法在任何地方找到它的文档。(Google对搜索字词没有帮助??!??!)。它做了什么以及代码示例如何工作? ??!是一个翻译为的三字符|。所以它说: !ErrorH […]

C语言 – #include 和#include“filename”有什么区别?

在C和C ++编程语言中,使用尖括号和在include语句中使用引号有什么区别,如下所示? #include <filename> #include "filename" 答案 实际上,区别在于预处理器搜索包含文件的位置。 对于#include <filename>预处理器以依赖于实现的方式搜索,通常在编译器/ IDE预先指定的搜索目录中。此方法通常用于包括标准库头文件。 对于#include "filename"预处理器首先在与包含该指令的文件相同的目录中进行搜索,然后 […]

c++ – 图像处理:“可口可乐罐”识别的算法改进

在过去几年里,我参与过的最有趣的项目之一是关于图像处理的项目。我们的目标是开发一个能够识别可口可乐“罐头”的系统(请注意,我正在强调’罐头’这个词,你会在一分钟内看到原因)。您可以在下面看到一个示例,其中可以在带有比例和旋转的绿色矩形中识别。 对项目的一些限制: 背景可能非常嘈杂。 该罐可以具有任何规模或旋转,甚至方向(在合理的限度内)。 图像可能有一定程度的模糊(轮廓可能不完全笔直)。 图像中可能有可口可乐瓶,算法应该只检测罐头! 图像的亮度可能会有很大差异(因此您不能 […]

C语言 – “static”在C中意味着什么?

我static在C代码中看到了不同地方使用的单词; 这就像C#中的静态函数/类(其中实现是跨对象共享的)? 函数内的静态变量在调用之间保持其值。 静态全局变量或函数仅在其声明的文件中“看到” 如果你是新手,(1)是更多的外国话题,所以这是一个例子: #include <stdio.h> void foo() { int a = 10; static int sa = 10; a += 5; sa += 5; printf("a = %d, sa = %d\n", a, sa); } […]

c++ – 什么是三法则?

什么是抄袭的对象是什么意思? 什么是复制构造函数和复制赋值运算符? 我什么时候需要自己申报? 如何防止复制对象? 介绍 C ++使用值语义处理用户定义类型的变量。这意味着对象被隐式复制到各种上下文中,我们应该理解“复制对象”实际意味着什么。 让我们考虑一个简单的例子: class person { std::string name; int age; public: person(const std::string& name, int age) : name(name), age(ag […]

C语言 – 访问数组越界有多危险?

访问其边界之外的数组有多危险(在C中)?有时候我会从数组外部读取(我现在理解我然后访问我的程序的某些其他部分使用的内存,甚至超出了它)或者我试图将值设置为数组之外的索引。该程序有时会崩溃,但有时只是运行,只会产生意想不到的结果。 现在我想知道的是,这真的有多危险?如果它损坏了我的程序,那就不是那么糟糕了。另一方面,如果它打破了我的程序之外的东西,因为我以某种方式设法访问一些完全不相关的内存,那么它是非常糟糕的,我想。我读了很多“任何可能发生的事情”,“细分可能是最不好的问题”,“你的硬盘可能变成 […]

c语言 – C中的“register”关键字?

什么是register关键字在C语言吗?我已经读过它用于优化,但在任何标准中都没有明确定义。它仍然是相关的,如果是的话,你什么时候使用它? 这是编译器的一个提示,即变量将被大量使用,如果可能,建议将其保存在处理器寄存器中。 大多数现代编译器会自动执行此操作,并且比我们人类更善于选择它们。 令我感到惊讶的是,没有人提到你不能获取寄存器变量的地址,即使编译器决定将变量保存在内存而不是寄存器中。 因此,使用register你什么都不赢(无论如何编译器将决定在哪里放置变量)并失去&操作员  […]

C++ – 为什么在宏中使用明显无意义的do-while和if-else语句?

在许多C / C ++宏中,我看到宏的代码包含在看似无意义的do while循环中。这是一些例子。 #define FOO(X) do { f(X); g(X); } while (0) #define FOO(X) if (1) { f(X); g(X); } else 我看不出它do while在做什么。为什么不在没有它的情况下写这个? #define FOO(X) f(X); g(X) 该do ... while和if ... else在那里让这个后您的宏分号总是意味着同样的事情。假设你有 […]

c语言 – ++ i和i ++有什么区别?

在C中,使用++i和之间有什么区别i++,哪些应该在for循环的增量块中使用? ++i将增加值的值i,然后返回递增的值。 i = 1; j = ++i; (i is 2, j is 2) i++将递增值的值i,但返回在i递增之前保持的原始值。 i = 1; j = i++; (i is 2, j is 1) 对于一个for循环,要么工作。++i似乎更常见,也许是因为这是K&R中使用的。 在任何情况下,遵循准则“宁可++i过i++”,你会不会出问题。 有一对夫妇的关于效率的意见++i和i++。在任 […]

C语言 – C中的函数指针如何工作?

我最近在C中使用了函数指针。 继续回答你自己的问题的传统,我决定对那些需要快速深入研究这个主题的人进行一些基本的总结。 C中的函数指针 让我们从一个基本功能开始,我们将指向: int addInt(int n, int m) { return n+m; } 首先,让我们定义一个指向函数的指针,该函数接收2 int秒并返回int: int (*functionPtr)(int,int); 现在我们可以安全地指出我们的功能: functionPtr = &addInt; 现在我们有了一个指向 […]

C语言 – 你如何设置,清除和切换一个位?

如何在C / C ++中设置,清除和切换? 设置一下 使用按位OR运算符(|)设置一个位。 number |= 1UL << x; 这将设置一点x。 使用1ULLif number宽于unsigned long; 1UL << x直到评估1UL << x了未定义的行为偏移超过a的宽度之后才会发生促销long。这同样适用于所有其他示例。 清理一下 使用按位AND运算符(&)清除一下。 number &= ~(1UL << x); 那会 […]
友情链接:蝴蝶教程