extern相关内容

使用外部"C"的潜在缺点是什么?

我已阅读 何时使用外部"C"在C ++中? 在C ++源代码中,什么是外部"C"? 为什么我们需要外部C" {##include }在C ++中? 但是,我没有找到一个答案:使用extern "C"是否有(潜在地,将来)不利(例如,在尽可能多的函数上)? 更具体地说:在接口仅使用C功能的函数中添加extern "C"是否有任何不利之处;换句话说,那些不使用@ ..
发布时间:2020-11-02 20:20:52 C/C++开发

C ++外部/多重定义

我正在尝试使用externs与C ++中的Ada接口.这两种实现之间有什么区别? 实施A namespace Ada { extern "C" { int getNumber(); int index; int value; } } 实施B namespace Ada { extern "C" ..
发布时间:2020-11-02 20:20:47 C/C++开发

功能模板:外部模板与显式专业化

请考虑以下函数模板声明: template >> void foo(T i); 此模板只有一个可能的有效实例,即使用T = int.我想将此定义放在实现文件中.我可以想到两种可能的方式. (如果您想知道为什么我会这样做而不是只说void foo(int i),那是 ..
发布时间:2020-11-02 20:20:40 C/C++开发

具有相同名称的两个静态变量(两个不同的文件),并在任何其他文件中外加一个静态变量

在一个文件中将变量声明为静态,在另一个文件中进行extern声明-我认为这样做会在链接时产生错误,因为在任何对象中都不会看到extern变量,因为在另一个文件中声明的变量是与静态限定词.但是以某种方式,链接器(renesas)没有显示任何错误并创建了可执行文件. 如果上述用例正确,那么在2个不同的文件中将2个变量声明为static,而在另一个文件中使用extern声明将其声明为static会 ..
发布时间:2020-11-02 20:19:33 其他开发

块范围链接C标准

以下标识符没有链接:声明为对象或函数以外的任何标识符;声明为功能参数的标识符; 声明的没有存储类说明符extern的对象的块作用域标识符. { static int a; //no linkage } 对于在可见该标识符的先前声明的范围中用存储类说明符extern声明的标识符,如果该先前声明指定了内部或外部链接,则该标识符在后面的声明中的链接与先前声明中指定的链接相同.如果没有在 ..
发布时间:2020-11-02 20:19:29 其他开发

具有外部"C"的C和C ++链接

我在.h文件中定义了如下的C ++函数,并在.cpp文件中实现: extern "C" void func(bool first, float min, float* state[6], float* err[6][6]) { //uses vectors and classes and other C++ constructs } 如何在C文件中调用func?如何设置我的文件体 ..
发布时间:2020-11-02 20:18:14 C/C++开发

差值外部"C"表示"C". vs外部

是对整个标头使用extern "C"指定符,还是对每个函数都指定extern是否存在区别? 据我所知,没有,因为只有函数和变量可以在外部链接,所以当我在每个函数原型和extern变量之前使用extern说明符时,我无需使用全局声明!? 示例A: #ifdef __cplusplus extern "C" { #endif void whatever(void); #endif ..
发布时间:2020-11-02 20:18:11 C/C++开发

重新定义;不同的基本类型(typedef结构)

当在不同文件中定义结构时,尝试使结构正常工作时会遇到麻烦.据我所知,错误告诉我该结构被定义了两次不同的时间.我相信也许我可能需要在某个地方使用extern?我尝试过尝试并在Google上寻求帮助,但无济于事. 非常感谢您的任何帮助,谢谢.我的所有四个文件都在下面. 文件:Foo.h typedef struct { int number; } my_struct; ..
发布时间:2020-11-02 20:17:03 其他开发

更改外部变量的值

我们在File1.c中 int arr[10]; 在File2.c中 extern int *arr; int main() { arr[0]=10; return 0; } 这可能会发生什么问题,为什么? 解决方案 数组不是指针.内存访问将是错误的. 在File1.c中,您具有内存布局: +---+---+---+---+---+---+- ..
发布时间:2020-11-02 20:17:02 其他开发

使用gcc的c99内联语义(mspgcc)

我正在编写几个我想内联的函数. 在此处中阅读并使用第二个c99内联选项并启用内联所有声明和定义,例如: extern inline void SPFD54124B_write_cmd(uint16_t command); 在标题中, inline void SPFD54124B_write_cmd(uint16_t command) { spi_write(comma ..
发布时间:2020-11-02 20:16:58 其他开发

如何防止Closure Compiler重命名特定对象的任何属性或方法?

我正在使用一个庞大的3rdparty库( Babylon JS ),该库将由该库提供自己的CDN,并且不能包含在我的Closure Compiler运行中. 该库包含一个对象,所有内容都定义为该对象的一部分. 它没有可用的externs文件,所以我开始写一个文件,但是它正在迅速增长.仅仅告诉Closure Compiler不要弄乱我正在设置的任何属性,包括我正在对对象的构造函数创建的对 ..

在C和C ++中不使用extern的不同编译结果

当我在两个不同的源文件中声明一个全局变量并仅在其中一个源文件中定义它时,C ++的编译结果与C的编译结果不同.请参见以下示例: main.c #include #include "func.h" // only contains declaration of void print(); int def_var = 10; int main() { pri ..
发布时间:2020-11-02 20:16:41 C/C++开发

C:头文件中的"extern"有什么用?

请问如果这听起来是一个已被问过很多次的问题,但我向您保证,这有点不同. 我使用Codeblocks进行C编程,最近我开始怀疑为什么有人在C中使用头文件.我知道它用于声明和/或定义变量结构.但是这是我尝试过的东西,现在我很困惑. 我有一个名为 的头文件 test1.h #ifndef TEST1_H_INCLUDED #define TEST1_H_INCLUDED stat ..
发布时间:2020-11-02 20:15:35 其他开发

局部变量和寄存器变量可以声明为extern吗?

我一直想知道是否可以在本地声明外部变量和寄存器变量.如果可以的话,会施加什么限制? 解决方案 在某些情况下可以将局部变量声明为外部变量 让我们阅读 C99 N1256标准草案. 该标准将“局部变量"称为具有“块范围". 6.7.1/5“存储类说明符"说: 具有块作用域的函数的标识符的声明除了extern外,没有其他明确的存储类说明符. 然后对于将extern添 ..
发布时间:2020-11-02 20:15:32 其他开发

静态内联,外部内联和普通内联函数有什么区别?

static inline,extern inline和普通的inline函数有什么区别? 我已经看到了一些模糊的解释.据我了解,static inline不仅是inline函数,它通常仅在某个文件中被引用,正如static关键字通常所指的那样.我想extern inline也是如此,这与extern变量的解释不同.任何答案将不胜感激! 解决方案 带有static inline的函数 ..
发布时间:2020-11-02 20:15:26 其他开发