在C语言中出现 "隐式函数声明 "的警告有什么意义?
正如问题所述,"函数声明"警告到底是什么含义?我们只是在GCC上提高了警告标志,发现了很多这些警告的情况,我很好奇这可能在修复它们之前可能引起了什么类型的问题? 另外,为什么这是一个警告而不是错误. GCC甚至如何能够成功链接此可执行文件?正如您在下面的示例中看到的,可执行的函数如预期的. 以以下两个文件为例: file1.c #include int main(void) { funcA(); return 0; } file2.c #include void funcA(void) { puts("hello world"); } 编译&输出 $ gcc -Wall -Wextra -c file1.c file2.c file1.c: In function 'main': file1.c:3: warning: implicit declaration of function
2 2023-11-27
编程技术问答社区
为什么C语言中需要volatile?
为什么在C中需要volatile?它是干什么用的?它会做什么? 解决方案 volatile告诉编译器不要优化与volatile变量有关的任何内容. 使用它至少有三个常见原因,所有这些涉及变量的价值可以在无可见代码行动的情况下变化的情况: : 当您与更改值本身的硬件接口 当有另一个线程运行时也使用变量 当有一个信号处理程序可能会更改变量的值时. 在 typedef struct { int command; int data; int isBusy; } MyHardwareGadget; 现在您要发送一些命令: void SendCommand(MyHardwareGadget* gadget, int command, int data) { // wait while the gadget is busy: while (gadget->isBusy) { // do nothing here. }
0 2023-11-25
编程技术问答社区
MSVC:为什么 "extern void x; "是 "非法使用'void'类型"?
为什么此代码: extern void x; 导致: $ cl t555.c /std:c11 /Za t555.c(1): error C2182: 'x': illegal use of type 'void' 这里是什么非法的? upd.用例: $ cat t555a.c t555.p.S #include extern void x; int main(void) { printf("%p\n", &x); return 0; } .globl x x: .space 4 $ gcc t555a.c -std=c11 -pedantic -Wall -Wextra -c && as t555.p.S -o t555.p.o && gcc t555a.o t555.p.o && ./a.exe t555a.c: In function ‘main’: t555a.c:7:20
0 2023-11-25
编程技术问答社区
在范围的开头声明C89局部变量?
我试图在ANSI C: 中这样做 include int main() { printf("%d", 22); int j = 0; return 0; } 这在Microsoft visual C ++ 2010(在ANSI C中(在ANSI C)项目).您会遇到一个错误: error C2143: syntax error : missing ';' before 'type' 这确实有效: include int main() { int j = 0; printf("%d", 22); return 0; } 现在,我在许多地方阅读了您必须在代码开头声明变量的许多地方. 我找到了很多人提供此建议的论坛,但是我没有看到它用任何"官方"来源写的,例如 gnu c 手册. 解决方案 ANSI C89要求在示波器开始时声明变量.这在C99中放松. 使用gcc
0 2023-11-23
编程技术问答社区
Visual Studio不能识别System.Linq
我创建了这个程序和C#,几周前它正常工作. 现在,我将所有这些代码复制到我正在从事的另一个项目.我将其添加到我正在从事的项目中的全新C#类中. Visual Studio在评论中没有识别出"找不到"的汇编引用. 这很奇怪,因为它们是在上一个程序中发现的.有人知道为什么Visual Studio找不到这些汇编参考吗? using System; using System.Collections.Generic; using System.Linq; //not found using System.Text; using XML_Creator; //not found using System.Xml.Linq; //not found using System.IO; 解决方案 一个受过良好教育的猜测:这可能是新项目的.NET框架目标版本. system.linq 被引入.网络框架3.5. 转到项目 - >属性 - >应用程序并检查目标框
4 2023-11-23
编程技术问答社区
什么时候使用UIKIT_EXTERN vs just extern
我猜我只有在项目中有可能使用变量的C ++代码的机会. 如果是这种情况,使用Uikit_extern声明所有外部可用常数是安全的吗? 我怎么看不到更多? 解决方案 我猜我只有在项目中有可能使用变量的C ++代码的机会. 对.这是主要原因.发生这种情况是因为C和C ++符号使用不同的命名约定. 有一个不常见的原因:UIKIT_EXTERN也指定默认可见性. 注意:更普遍地,"符号" - 不是"变量",因为extern也可以应用于常数,函数等. 如果是这种情况,使用Uikit_extern声明所有外部可用常数是安全的吗? 简短答案:使用此表格将是一个好习惯(请阅读:'safe'),但通常最好的图书馆声明自己的等同于UIKIT_EXTERN. UIKIT_EXTERN是Uikit声明. 库不应取决于此声明,而只是定义自己的同义词 - 许多人都这样做,但是我发现它在C和C ++中更为常见,因为这些程序通常针对更多的平台,并且很大一部分iOS
2 2023-11-20
编程技术问答社区
C++向量:声明多个变量,名称为 xxx1, xxx2....xxxN (从文件中加载N)
我要升级程序,以使其从文件中动态配置. 我需要的是许多vector vie,而该数字取决于int varible. int k=4 //loaded from file, i handled it vector NAME(k) 此外,这些变量的名称需要增加数字(第一个对象:name1,第二名等). 这是我有史以来的第一个帖子,很抱歉所有错误或缺乏信息:) 解决方案 您无法动态命名变量,但是可以将它们存储在地图中. std::map > myVectors; for (int i = 0; i ()));
0 2023-11-17
编程技术问答社区
如何声明一个线程的向量
我是新来的C ++编程,需要一些帮助才能将线程库与矢量库... 首先,我关注此但是编译器(Visual Studio 2013)向我展示了错误,我不知道有多正确: 函数的首次声明 void Fractal::calcIterThread(vector> &matriz, int desdePos, int hastaPos, int idThread){ ... } 在主循环中 vector> res; res.resize(altoPantalla); for (int i = 0; i workers(numThreads); for (int i = 0; i
0 2023-11-17
编程技术问答社区
C++中的向量初始化
我正在使用代码中的向量. 导致错误的线如下: vector alt_seq ; alt_seq = vector(1000); for(int j=0; j alt_seq(1000) ; 在这种情况下,代码正常工作. 但是,我不想给出初始大小,因为在运行时向量中的对象数量将是可变的. 请帮我.我是新来的C ++. 为您的参考,完整的方法函数在这里: http://pastebin.com/2dufeui5 解决方案 您的N
0 2023-11-17
编程技术问答社区
向量<int> a , 向量<int> a[n]和向量<int> a(n)之间的区别是什么?
我刚刚了解了矢量,我对它们的使用感到困惑. 请告诉我: 有什么区别 vector a; , vector a[n]; 和 vector a(n); 解决方案 vector a;声明一个空的向量. vector a[n];声明一个包含n空向量的数组. vector a(n);声明包含n零的向量. 奖金: vector a{n};声明包含单个元素n的向量. 其他解决方案 vector a; int s vector s的声明a vector a[n]; 用int的vector s vector s的声明a,a n elements. vector a(n); int s a的声明vector初始化为n 0s. 的数字
4 2023-11-17
编程技术问答社区
如何在C++中初始化一个向量
我想像数组一样初始化一个向量. 示例 int vv[2] = {12, 43}; 但是当我这样这样做时, vector v(2) = {34, 23}; 或 vector v(2); v = {0, 9}; 它给出了一个错误: 在" {" token 之前预期的主要表达 和 错误:预期',''或;;在" ="令牌之前 分别. 解决方案 使用新的C ++标准(可能需要在编译器上启用特殊标志)您可以简单地做: std::vector v { 34,23 }; // or // std::vector v = { 34,23 }; 甚至: std::vector v(2); v = { 34,23 }; 在不支持此功能的编译器上(初始化器列表),您可以使用数组模拟此功能: int vv[2] = { 12,43 }; std::vector v
2 2023-11-17
编程技术问答社区
了解VBScript中的Const表达式
好吧,我尝试了解Const extressions in VBScript中的局限性.除文字外,我什么也没能使用.什么 字面或其他常数,或任何包含全部的组合 算术或逻辑运算符,除 是. 因此,如果"包括所有算术或逻辑运算符",那么我希望我可以做这样的事情: Const X = (1 + 2) 但这带来了"预期字面常数"的错误.我找到了一个有趣的答案在这里这使一个人可以在某种程度上作弊,因此可以用: 来完成以上操作. Execute "Const X = " & (1 + 2) ,但我的问题是关于标准恒定声明.如果偶然的文档说了诸如"表达可能只是字面意思"之类的话,那么我永远不会问. 那么我还能使用什么(除了字面意思)呢? 解决方案 脚本56.CHM在备注部分中说了以下内容: 默认情况下是公共的.在程序中,常数始终是私人的;他们的可见性无法更改.在脚本中,可以使用私有关键字更改脚本级常数的默认可见性. 要在同一条线上组合几个常数声明,请将每个
2 2023-11-17
编程技术问答社区
声明变量 内存泄漏
我想知道使用VBScript时最正确的方法是什么.在我使用所有变量之前,应该立即声明所有变量吗?程序的开始?我了解全局与本地,但是在我的脚本中,所有变量都是本地的.我知道记忆泄漏在99.9%的时间中写作时永远不会是一个问题,但是我也很好奇"最佳"在脚本中清除和发布内存的方法.我的意思是,清除变量/对象的时机(使用它们完成后与脚本的末尾,等等)等. 一个例子: Dim fso: Set fso = CreateObject("Scripting.FileSystemObject") Dim arrList : Set arrList = CreateObject("System.Collections.ArrayList") Dim objDict: Set objDic = CreateObject( "Scripting.Dictionary") Dim objEmail : Set objEmail = CreateObject("CDO.Message") Dim
2 2023-11-17
编程技术问答社区
我如何在一行中声明和定义一个自定义类型的变量?
如何在一行中声明并设置自定义类型. Option Explicit Type Stackoverflow stack As String overflow As String End Type Sub WorkingExample() Dim example As Stackoverflow example.stack = "stack" example.overflow = "overflow" MsgBox (example.stack + example.overflow) End Sub Sub NotCompiling() Dim example As Stackoverflow = {.stack = "stack", .overflow = "overflow"} MsgBox (example.stack + example.overflow) End Sub 在这个迷你示例中,Working
0 2023-11-16
编程技术问答社区
如何使用vba来修改xml的声明
我的第一篇文章,哇!在过去的六个月中,我一直在学习VBA,并且取得了很多进步,我一直潜伏着.但是现在我卡住了,我需要你的帮助! 我有一组XML文档,我需要用另一份声明来替换顶部的声明,我不知道该怎么做.我已经阅读了许多有关使用VBA中使用DOMDOCUMEMS修改XML文档的文章,并且我弄清楚了如何在Microsoft API的帮助下修改XML文件中的不同节点.但是,我似乎无法访问声明. 这是可能的吗? 如果是这样,我在正确的轨道上吗? 如果是这样,我需要调用什么(如果存在)属性或方法,以访问XML文件中的声明,以便我可以修改它们? 如果没有,我该如何处理? 我真的很想避免通过手工复制和粘贴进行此操作,有成千上万的记录需要修改. 这是我的VBA拉动和修改字段: Sub XMLtest() Dim strXML As String Dim objXML As MSXML2.DOMDocument Dim point A
0 2023-11-16
编程技术问答社区
如何在VBA中使用 "As "声明多个变量并指定类型?
根据 a,b和c都是单个的; x和y都是双 Dim a, b, c As Single, x, y As Double, i As Integer > a, b, and c are all Single; x and y are both Double 这背后的逻辑如下 您可以使用单独的As子句为您声明的每个变量指定不同变量的不同数据类型.每个变量采用在其变量名称部分后遇到的第一个As子句中指定的数据类型. 但是,当我检查调试器或MsgBox VarType(a)输出时,情况并非如此. 您可以看到,看来As仅适用于自身之前的变量,即,c,y和i.所有其他都是变体/空,VarType返回0. 这只是文档是错误的,还是我错过了明显的东西? Microsoft Visual Basic用于应用程序7.1.1056 Excel 2016(Windows 10) 解决方案 您链接到的文档并没有错,但它是为vb.net而不是VBA编写的.
2 2023-11-15
编程技术问答社区
VB 2010 '变量'未被声明。由于它的保护级别,它可能无法被访问。
我有点像N00B到VB,想知道如何在多个潜艇上提供可用的变量.这只是一个熟悉VB的测试应用程序. 我的代码: Public Class Sentences Private Sub SentenceBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SentenceBox.TextChanged If Me.Text = Trim(Sentence) Then MsgBox("Good job!") Main_Menu.Show() Me.Close() End If End Sub Private Sub ABCs_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim r
2 2023-11-14
编程技术问答社区
C++中的变量函数声明中省略了逗号
我被用来宣布这样的变量函数: int f(int n, ...); 阅读 c ++编程语言我发现书中的声明省略了逗号: int f(int n...); // the comma has been omitted 看来,当我尝试使用C编译器对其进行编译时,我会遇到此错误: test.c:1:12: error: expected ‘;’, ‘,’ or ‘)’ before ‘...’ token int f(int n...); 写作int f(int n, ...)和int f(int n...之间是否有区别? 为什么添加了此语法C ++? 解决方案 根据C ++标准的第8.3.5.4节(当前草稿): 句法正确的地方,而" ..."不属于 一个抽象 - 模具",..."是" ..."的代名词. 简而言之,在C ++ ...(省略号)中,它本身就是操作员,因此可以在没有逗号的情况下使用,但是将逗号的使用用于向后兼容. 其他
6 2023-11-13
编程技术问答社区
创建数组的动态声明
我想要制作数组,这将动态声明,我想像这样的东西.我想制作识别单词字符的程序. char i; scanf("%c",&i); char word[]=i; printf("%c",word[0]); 我也尝试了这样的事情: char i; scanf(%c,&i); char *word=i; printf("%c",word[0]); 我不知道如何使它起作用. 解决方案 让我们从基础开始.您在写作时要声明的内容: char word[]=i; 是一个字符的数组,它将根据=标志的右侧进行初始化.在这种情况下为i,它是一个单个字符(即使从技术上讲是一个无效的初始化器).因此,从本质上讲,您正在尝试声明大小1的字符阵列. 如果允许的话,word不会是字符 string ,因为它不是(也不能)null-terminated.它只是类型char的数组,不能用作字符串. (注意char word[]="i";将有效 - 终止) 当您声明word为:
0 2023-11-13
编程技术问答社区