extern相关内容
我在其中一个 cpp 文件中有一个全局变量,我正在为其分配一个值.现在为了能够在另一个 cpp 文件中使用它,我将它声明为 extern 并且这个文件有多个使用它的函数,所以我在全局执行此操作.现在可以在其中一个函数中访问此变量的值,而不能在另一个函数中访问.除了在头文件中使用它之外的任何建议都会很好,因为我浪费了 4 天的时间. 解决方案 抱歉,我忽略了对建议使用头文件以外的任何其他内容
..
我可以像 extern const 那样混合 extern 和 const 吗?如果是,const 限定符是否仅在其声明的范围内强加其统治,还是应该与其声明的翻译单元的声明完全匹配?IE.我可以声明 extern const int i; 即使实际 i 不是常量,反之亦然? 解决方案 是的,您可以同时使用它们. 是的,它应该与实际声明的翻译单元中的声明完全匹配.当然,除非您参与了 Und
..
如果您在 C++ 中使用将整数值作为参数的模板,那么对于用作参数的整数变量是否与在函数调用中用作参数的情况有所不同? 这是问题这里的后续 .我特别想解决在函数或模板中声明为“extern const int"的 WRT 变量是否存在差异? 我可以看到,对于某些模板情况,编译时需要参数值.这总是真的吗?有没有办法指定(可能仅用于参数值的某些用途)在运行时使用该值? 解决方案 以下
..
我在 Objective-C 程序中遇到枚举可见性的问题.我有两个头文件,一个定义了 typedef enum.另一个文件需要使用 typedef 的类型. 在直接的 C 中,我会简单地 #include 另一个头文件,但在 Objective-C 中,建议不要在头文件之间使用 #import,而是使用根据需要转发 @class 声明.但是,我不知道如何向前声明枚举类型. 我不需要实际
..
我有一个来自第三方的 dll,它是用 C++ 编写的.以下是来自 dll 文档的一些信息: //开始文档RECO_DATA{wchar_t 姓氏[200];wchar_t 名字[200];} 说明:用于接收函数结果的数据结构.所有函数结果将是存储为 Unicode (UTF-8). 方法: bool recoCHN_P_Name(char *imgPath,RECO_DATA *o_d
..
我正在尝试包含在我们的 C++ 项目中找到的一些 C 代码.该函数在 C 文件中是这样定义的. #ifdef __cplusplus外部“C"{#万一extern char *dtoa(double, int, int, int *, int *, char **);extern char *g_fmt(char *, double);extern void freedtoa(char*);#i
..
这是对是否可以对指针进行 typedef 的答案-to-extern-“C"-模板中的函数类型? 此代码无法使用 g++、Visual C/C++ 和 Comeau C/C++ 编译,错误消息基本相同: #include 外部“C"{静态 int do_stuff(int) {返回3;}模板结构测试{静态无效 fo
..
图 1:函数模板 TemplHeader.h template无效 f(); TemplCpp.cpp template无效 f(){//...}//显式实例化模板空f T (); Main.cpp #include "TemplHeader.h"外部模板 void f T ();//这个对吗?int main() {f();返回0;} 这是使用 extern 模板 的正确方法,
..
我知道 C 中的全局变量有时具有 extern 关键字.什么是 extern 变量?声明是怎样的?它的范围是什么? 这与跨源文件共享变量有关,但它是如何精确工作的?我在哪里使用 extern? 解决方案 使用 extern 仅适用于您正在构建的程序由链接在一起的多个源文件组成,其中一些例如,在源文件file1.c 中定义的变量需要是在其他源文件中引用,例如file2.c. 了解
..
我了解 inline 本身是对编译器的建议,它可以自行决定是否内联函数,并且还会生成可链接的目标代码. 我认为 static inline 做同样的事情(可能会也可能不会内联),但在内联时不会产生可链接的目标代码(因为没有其他模块可以链接到它). extern inline 在哪里适合图片? 假设我想用内联函数替换预处理器宏并要求该函数被内联(例如,因为它使用了 __FILE__
..
考虑以下程序: extern int x;自动 x = 42;int main() { } Clang 3.5 接受(现场演示),GCC 4.9 和 VS2013 不接受(前者的现场演示).谁是对的,C++ 标准中规定的正确行为在哪里? 解决方案 令人惊讶的是,标准中几乎没有这方面的内容.我们听到的关于重新申报的所有信息是: [C++11: 3.1/1]: 声明(第 7 条)可以
..
文件 1.c int a[10]; 文件 main.c: extern int *a;int main(){printf("%d\n", a[0]);返回0;} 给我一个段错误!怎么了? 解决方案 数组分解,或者在作为参数传递给函数时隐式转换为指针,或在右侧转换为右值时赋值运算符.所以就像: int array[10];int* a = 数组;//隐式转换为int类型的指针空
..
从这里看来,C 似乎不支持默认参数. 我在导出的库中有以下方法: extern "C"{__declspec (dllexport) uintptr_t 方法(int freq, int *pRetval, bool *support2MHz);} 如果我像这样将最后一个参数设为可选: extern "C"{__declspec (dllexport) uintptr_t 方法(int
..
我已经阅读了有关此链接的多个搜索结果,但仍然没有得到: https://gcc.gnu.org/gcc-5/porting_to.html 这个简单的代码为什么会生成链接器错误: #include内联int add(int a,int b){返回a + b;}int main(){printf(“%d \ n",add(1,2));返回0;} 我要让编译器内联 a
..
我了解到 extern 关键字在函数上下文中是隐式的,因此,除非您另外指定使用 static 关键字(错误基本上是与变量所使用的 static (它们只是共享一个关键字)完全不同的概念,它们对所有目标文件都是可见的.这很有道理;将声明隐式地放在外部,而当声明与定义在同一文件中时,从技术上讲是不必要的,这很有用,因为程序员不必每次想使用函数时都键入 extern 它的定义文件,通常是这样.在我看来,
..
这很难用文字解释,所以我举一个例子. //f1.c整数a = 5;int main(){printf("func2()输出为:%i \ n",func2());返回0;}//f2.c静态整数a = 3int func2(){外部int返回} 当我编译并运行此程序时,我得到3,而我期望为5.有人可以向我解释为什么我得到3吗?我本以为在函数中使用extern不会使用静态变量的值. 解决方案
..
我知道,如果char数组是全局或静态局部,其元素将初始化为\ 0,但是如果char数组是extern变量怎么办? 解决方案 如果变量被声明为extern但不是全局变量,则它也将接受相同的初始化处理.例如 命名空间A {extern int x;int x;} 此非全局变量将初始化为零.所有名称空间作用域变量都接受此处理.
..
假设我们使用extern关键字有一些外部链接. 我有(在class1.cpp中): MyClass * myClassVar = NULL; 构造函数将初始化以上内容,然后析构函数将其删除. 然后在class2.cpp和class3.cpp中有: extern MyClass * myClassVar; 这些类使用myClassVar(进行常规的null检查等).
..
我正在导出可以从非托管代码中调用的方法,但是该函数本身位于托管c ++项目中.以下代码导致编译器错误: 错误C2526:'System :: Collections :: Generic :: IEnumerator :: Current :: get':C链接函数无法返回C ++类'System :: Collections :: Generic :: KeyValuePair
..
我尝试声明全局变量 config : //general.hstruct config_t {整数};extern struct config_t配置;//全局变量 然后我在 general.c 中定义配置变量: //general.c#include"general.h"struct config_t config = {num = 5;}; 但是,当我尝试在主函数中使用全局变量'c
..