我正在尝试运行以下代码(在fedora 11 i586上的gcc 4.3中):
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
struct s_smallstruct{
int smallstruct;
};
struct s_test2{
char * test2;
struct s_smallstruct* smallstruct;
};
struct s_test3{
char * test3;
struct s_smallstruct * smallstruct;
};
struct s_test1{
char * test1;
struct s_test2 * test2;
struct s_test3 * test3;
};
int main(){
struct s_test1 *test1 = (struct s_test1 *) malloc( sizeof test1 );
test1->test2[0].smallstruct[0].smallstruct = 123;
int num = test1->test2[0].smallstruct[0].smallstruct;
// struct s_smallstruct * smallstruct = (struct s_smallstruct *) malloc( sizeof smallstruct …
Run Code Online (Sandbox Code Playgroud) 如何用C++或C#编写在Windows Vista上启动应用程序的程序?
例如,启动Dreamweaver CS 4("C:\ Program Files\Adobe\Adobe Dreamweaver CS4\Dreamweaver.exe")并使用BringWindowToTop函数将其置于顶部?
我最近发现这在 SQLite 中是不可能的:
SELECT * FROM fruit WHERE fruit MATCH '-apple'
Run Code Online (Sandbox Code Playgroud)
然而这是可能的:
SELECT * FROM fruit WHERE fruit MATCH 'pear -apple'
Run Code Online (Sandbox Code Playgroud)
我使用 FTS3 和 FTS4 进行了尝试,结果相同。为什么 match 需要至少一个非否定项?我该如何解决这个限制?我需要返回所有与“apple”不匹配的水果......就是这样。有任何想法吗?
我有一个C++库,可以完成一些数值工作.主要参数是段数.对于速度来说,重要的是段数为3的因素const
,但是我想在编译时使用它来定义它-DSEGMENTS 32
.标题看起来像这样:
#ifdef SEGMENTS
const int segments = SEGMENTS
#else
const int segments = 20
#endif
Run Code Online (Sandbox Code Playgroud)
这样可行.但是,与这个库连接的程序没有得到-DSEGMENTS
,因此segments
总是20.没有const
我知道解决方案,但我不知道.extern
如果可以使用cmake,我可以想象一些技巧或在预编译后安装标头.
我一直在考虑增加一个指针,但我想现在一般我不知道这两个操作/运算符之间的语义差异.例如,我的教授说如果你有一个[10]你不能说++指向下一个元素,但我从经验中知道a + 1确实有效.我问为什么,他说"a ++是一个动作而一个+ 1是一个表达".他的意思是"动作"是什么意思?如果有人能告诉我更多关于这个以及这两个操作之间的内在差异,我会非常感激.谢谢.
这是我在C中的代码片段:
char *str = NULL;
int len = -1;
// Get length
len = snprintf(NULL, 0, "[%d]", 2);
// Allocate str
str = (char *)malloc(len + 1);
// Assign str
snprintf(str, len, "[%d]", 2);
assert(len == 3);
// Display str
puts(str);
Run Code Online (Sandbox Code Playgroud)
我希望这应该显示出来[2]
.而len
这里是3.
但只运行此代码 [2
为什么会这样?
如果我将指针P从函数f1传递到函数f2,并修改f2中的P的内容,这些修改会自动反映在f1中吗?
例如,如果我需要删除链表中的第一个节点:
void f2( Node *p)
{
Node *tmp = p;
p = p -> next;
delete tmp;
}
Run Code Online (Sandbox Code Playgroud)
对P的更改是否会反映在调用函数中,还是现在指向已释放的内存空间?
(我在这里的直观答案是否定的,没有反映变化.但是,好的消息来源告诉我上面的代码会起作用.有人可以花时间给出答案并解释它背后的推理吗?另外,如果上面的代码是错误的,我们如何在不使用返回类型的情况下实现这一点?)
嘿,我正在尝试使用sysfs一点点,从用户空间获取一些数据到我的内核模块.这是代码:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/elf.h>
#include <linux/fs.h>
#include <linux/slab.h>
#include <linux/kobject.h>
#include <linux/sysfs.h>
#define PRINT(x) printk(KERN_INFO x "\n")
#define ERROR(fmt,arg...) printk(KERN_ALERT "Error - " fmt,##arg)
ssize_t mystore (struct kobject *obj,
struct attribute *attr, const char *buff, size_t count)
{
/* doing a little bit */
return count;
}
ssize_t myshow (struct kobject *obj, struct attribute *attr, char *buff)
{
return 0;
}
char file_name[] = "myfile";
static struct attribute myattribute = {
.name = file_name,
.mode …
Run Code Online (Sandbox Code Playgroud) 我正在查看有人编写的两行代码,第二行有一个例外,但我不明白为什么.
char** array = (char**) new char [2] [6];
std_strlprintf(array[0],6,"[%d]", num);
Run Code Online (Sandbox Code Playgroud)
std_strlprintf是一个Brew函数,它将格式化输出写入字符串.(num是一个0的整数值)
为什么这段代码有异常,访问数组的第一个元素为buff [0]有什么问题?
编辑:抱歉我的帖子中有一个错字.现在纠正了.这是具有异常的代码.
我需要比较两个字符串的哈希值。我使用字符串“template”进行测试。但我得到了这个字符串的不同哈希值,所以它总是不一样。我使用 CryptoApi 和 MD4
int _tmain(int argc, _TCHAR* argv[])
{
std::hash_map<int,int> table;
HCRYPTPROV hProv1,hProv2;
BYTE *pbBuffer1=(BYTE*)"template";//data to hash
DWORD dwBufferLen1=strlen((char*)pbBuffer1)+1;
HCRYPTHASH hHash1,hHash2;
//first hash
CryptAcquireContext(&hProv1,NULL,NULL,PROV_RSA_AES,0);
CryptCreateHash(hProv1,CALG_MD4,0,0,&hHash1);
CryptHashData(hHash1,pbBuffer1,dwBufferLen1,0);
/*---------*/
BYTE *pbBuffer2=(BYTE*)"template";//data to hash
DWORD dwBufferLen2=strlen((char*)pbBuffer2)+1;
//second hash
CryptAcquireContext(&hProv2,NULL,NULL,PROV_RSA_AES,0);
CryptCreateHash(hProv2,CALG_MD4,0,0,&hHash2);
CryptHashData(hHash2,pbBuffer2,dwBufferLen2,0);
if (hHash1==hHash2)
printf("The Same\n");
else printf("Not same\n");
/*---------*/
std::cout<<hHash1<<std::endl;
std::cout<<hHash2<<std::endl;
if (hProv1)
CryptReleaseContext(hProv1,0);
if (hProv2)
CryptReleaseContext(hProv2,0);
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
例如hHash1中的哈希值
691136
Run Code Online (Sandbox Code Playgroud)
hHash2 中的哈希值
691216
Run Code Online (Sandbox Code Playgroud)