Tag: 参考

什么类型是对数组变量的引用?

我有以下代码: /* * Pointer to a function that reads a codesegment */ typedef bool (*BRCS)(void *, uint32, uint64 *, uint64 *, const char **, const char **); BRCS get_prog_id; /* * ‘get_prog_id’ is loaded from a dynamic library */ uint64 start_o; uint64 length_o; char prog_id[256]; char err[256]; get_prog_id(NULL, 0, &start_o, &length_o, &prog_id, &err); 当我运行我的编译器时,我收到以下警告: passing […]

将C ++引用包装到C API中

我有一个头文件,应该是一个组合的C ++和C API。 C部分被包装成extern “C” ,但声明本身看起来与C不同; 例如: foo::Bar& Foo_Baz_GetBarOfQux(void *_self, const foo::Qux &qux); 有没有办法从普通C实际使用它? 我显然不能使用这个标题,但也许我可以以某种方式重新声明它: /* type? */ Foo_Baz_GetBarOfQux(void*, const /* type? */); 令我困惑的是如何声明这些引用的类型(如果可能的话)。 PS我知道我可以在此基础上编写自己的C包装器:我将类声明为不透明结构: typedef struct foo_bar foo_bar_t; typedef struct foo_baz foo_baz_t; typedef struct foo_qux foo_qux_t; 然后编写一个包含上述函数的类C函数: extern “C” foo_bar_t* foo_baz_get_bar_of_qux( foo_baz_t* baz, foo_qux_t* qux) { return (foo_bar_t*) Foo_Baz_GetBarOfQux(baz, *(foo::Qux*)qux); } 但我想知道我是否可以直接使用原始的Foo_Baz_GetBarOfQux() 。

我想知道什么是真正的回报?

假设 第一个案例 int a; int *p= &a ; it works no error 第二种情况 long int a; long int b; b = & a; it wont work 我们大多数人都说b是变量而不是指针。 但请看下面的内容。 所以问题是,如果&a返回一个无符号整数的地址,那么为什么我们不能将它分配给一个普通变量呢? 但为什么只能指针? 见下文 b = (unsigned int) &a ; it works after typecasting though its not practicable. 如果地址是整数格式,那么为什么无符号或长整数保存呢? 我在想,背后肯定有一些隐藏的秘密。 谁有人透露它? 我的想法是,指针必须在内部做一些事情,但我想知道它会是什么以及为什么普通变量不能。 感谢您的所有答案,但实际的问题是什么真的&a返回? 整数值与否? 如果是整数,为什么变量不能保持呢? long int a […]

为什么选择&符号作为C ++中引用的符号?

有没有人知道为什么选择&符号作为表示C ++引用的方式? AFAIK(虽然我没有附近的书),Stroustroup没有解释这个选择,我觉得有点奇怪,因为相同的符号已用于C中的地址。

我在哪里可以找到ncurses C API的完整参考?

我在哪里可以找到ncurses C API的完整参考?

C指针和内存分配:Realloc数组和指针传递

对于那些有C经验的人来说,这将是一个简单的内存分配/引用问题: 这是我的数据结构: struct configsection { char *name; unsigned int numopts; configoption *options; }; typedef struct configsection configsection; struct configfile { unsigned int numsections; configsection *sections; }; typedef struct configfile configfile; 以下是初始化configsection或configfile以及将配置文件添加到配置文件的例程: // Initialize a configfile structure (0 sections) void init_file(configfile *cf) { cf = malloc(sizeof(configfile)); cf->numsections = 0; } // Initialize a configsection structure with […]

C ++ by-reference参数和C链接

我遇到了一段代码(使用XLC8和MSFT9编译器),包含一个带有C链接和引用参数定义的函数的C ++文件。 这让我很烦,因为引用只是C ++。 有问题的函数是从C代码调用的,其中它被声明为将指针参数取代为相同类型而不是引用参数。 简化示例 : C ++文件 : extern “C” void f(int &i) { i++; } C档案 : void f(int *); int main() { int a = 2; f(&a); printf(“%d\n”, a); /* Prints 3 */ } 现在,街上的一句话就是大多数C ++编译器,它们都像指针一样实现引用。 是这样的,只是纯粹的运气,这个代码工作的原因,或者它在C ++规范中的某处说,当你用引用参数和C链接定义一个函数时结果是什么? 我无法找到任何相关信息。

对main的未定义引用 – collect2:ld返回1退出状态

我正在尝试编译一个程序(称为es3),但是,当我从终端写入时: gcc es3.c -o es3 看来这条消息: /usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start’: (.text+0x18): undefined reference to `main’ collect2: ld returned 1 exit status 我能做什么?

C有引用吗?

C有引用吗? 即在C ++中: void foo(int &i)