我使用的是Git版本1.8.4.2.
当我按下tab以自动完成任何命令时,它会打印下面的错误,它也会完成命令.
错误:key不包含部分: - get-regex
有人可以帮忙避免这个错误吗?
我在下面的链接中读到,未命名(匿名)类不应该包含静态数据.有谁可以让我知道它的原因?
https://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.cbclx01/cplr038.htm 说明如下..
在程序中只能有一个静态成员的定义.未命名的类,未命名的类中包含的类以及本地类不能具有静态数据成员.
我尝试了一些有趣的代码(至少对我而言!).这里是.
#include <iostream>
struct myStruct{
int one;
/*Destructor: Program crashes if the below code uncommented*/
/*
~myStruct(){
std::cout<<"des\n";
}
*/
};
struct finalStruct {
int noOfChars;
int noOfStructs;
union {
myStruct *structPtr;
char *charPtr;
}U;
};
int main(){
finalStruct obj;
obj.noOfChars = 2;
obj.noOfStructs = 1;
int bytesToAllocate = sizeof(char)*obj.noOfChars
+ sizeof(myStruct)*obj.noOfStructs;
obj.U.charPtr = new char[bytesToAllocate];
/*Now both the pointers charPtr and structPtr points to same location*/
delete []obj.U.structPtr;
}
Run Code Online (Sandbox Code Playgroud)
我已将内存分配给charPtr并使用structPtr删除.当我向myStruct添加析构函数时崩溃,否则没有问题.
这到底发生了什么.据我所知,delete []将调用析构函数的次数与new []中给出的次数相同.为什么在myStruct中没有析构函数时它不会崩溃?
我想在协议缓冲区消息中添加字符串数组,但我不能这样做。我写如下
repeated string data = 1[packed=true];
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[packed = true] can only be specified for repeated primitive fields.
Run Code Online (Sandbox Code Playgroud)
我可以使用相同的语法对int数组执行此操作。我很困惑为什么将字符串视为非原始类型。有人可以帮我吗?谢谢 !!
我有一个结构供别人使用,他们也依赖sizeof(struct S).下面是我的结构,
struct S{
int aVar1;
void *ptr1;
}
Run Code Online (Sandbox Code Playgroud)
将来,我可能会添加新成员(现在还不确定),比如..
struct S{
int aVar1;
void *ptr1;
int aVar2;
void *ptr2;
}
Run Code Online (Sandbox Code Playgroud)
我知道这打破了与依赖用户的向后兼容性sizeof.
为了避免这种情况,我计划在struct中添加一些可以在将来使用的虚拟指针.
struct S{
int aVar1;
void *ptr1;
void *dummyptr1;
void *dummyptr2;
void *dummyptr3;
void *dummyptr4;
void *dummyptr5;
void *dummyptr6;
}
Run Code Online (Sandbox Code Playgroud)
任何更好的解决方案请保持向后兼容性?
我的应用程序中有以下功能:
void func(char *file, int line)
{
char stmt[150];
sprintf(stmt, "Failed in file %s, at line number %d", file, line);
}
Run Code Online (Sandbox Code Playgroud)
在这里,我采用 150 字节的字符数组(粗略猜测),而不是我需要找到我在 sprintf() 中给出的字符串的长度并采用该大小的数组。
请建议我是否在 C 中使用这种工具来查找格式化字符串的长度。谢谢 !
我有下面的代码崩溃.
aClass *ptr_obj = new aClass[5];
delete ptr_obj;
Run Code Online (Sandbox Code Playgroud)
我知道,ptr_obj将使用delete []删除,但我的问题是,当我使用delete时它崩溃的原因.我以为它会将析构函数称为第一个对象而不是崩溃.请帮忙.
我正在尝试创建和打开一个文件fopen并fdopen写入一些内容。下面是我写的代码:
char Path[100];
int write_fd;
snprintf(Path,100,"%s/%s","/home/user","myfile.txt");
printf("opening file..\n");
write_fd = open(Path, O_WRONLY | O_CREAT | O_EXCL, 0777);
if(write_fd!=-1)
{
printf(" write_fd!=-1\n");
FILE *file_fp = fdopen(write_fd,"a+");
if (file_fp == NULL)
{
printf("Could not open file.File pointer error %s\n", std::strerror(errno));
close(write_fd);
return 0;
}
write(write_fd, "First\n", 7);
write(write_fd, "Second\n", 8);
write(write_fd, "Third\n", 7);
fclose(file_fp);
}
Run Code Online (Sandbox Code Playgroud)
文件 fdwrite_fd是使用 WRONGLY 权限创建的,该权限应该具有读/写(?)的权限。但是当fdopen使用 mode 调用文件描述符时a+,它会抛出错误,说无效参数。
它以 mode 成功打开a。
模式之间究竟有何不同a并a+导致此错误?