Objective-C中常量的命名约定是什么(或者最常用的命名方式)? extern常量是否有不同的标准? 我见过的一些风格: NSString* const kPreferenceFirstRun = @"FirstRun"; // Replace "XY" by a prefix representing your company, project or module NSString* const XYPreferenceFirstRun = @"FirstRun";
在Objective-C程序中遇到枚举可见性问题。 我有两个头文件,一个定义了一个typedef enum 。 另一个文件需要使用typedeftypes。 在直接的C中,我只是简单地包含另一个头文件,但是在Objective-C中,build议不要在头文件之间使用#import ,而@class根据需要使用forward @class声明。 但是,我无法弄清楚如何转发 – 声明一个枚举types。 我不需要实际的枚举值,除了在相应的.m实现文件中,我可以安全地#import了。 那么我怎样才能得到在头文件中识别typedef enum ?
extern关键字是什么意思? 我在类似的函数声明前看到过 extern void DoFoo …
图1: function模板 TemplHeader.h template<typename T> void f(); TemplCpp.cpp template<typename T> void f(){ //… } //explicit instantation template void f<T>(); Main.cpp的 #include "TemplHeader.h" extern template void f<T>(); //is this correct? int main() { f<char>(); return 0; } 这是使用extern template的正确方法吗,还是仅使用此关键字作为类模板,如图2所示? 图2: 类模板 TemplHeader.h template<typename T> class foo { T f(); }; TemplCpp.cpp template<typename T> void foo<T>::f() { […]
我想问一下在Objective C项目中使用FOUNDATION_EXPORT而不是extern的原因。 我已经检查了这个问题 ,使用FOUNDATION_EXPORT获得了340分(第一名),而使用extern只获得了74分(第二名)。 有谁能解释为什么? 使用FOUNDATION_EXPORT而不是extern是否有任何实际的原因? 谢谢!
我试图创build一个DLL,导出一个名为“GetName”的函数。 我想要其他的代码能够调用这个函数,而不必知道mangled函数名称。 我的头文件看起来像这样: #ifdef __cplusplus #define EXPORT extern "C" __declspec (dllexport) #else #define EXPORT __declspec (dllexport) #endif EXPORT TCHAR * CALLBACK GetName(); 我的代码如下所示: #include <windows.h> #include "PluginOne.h" int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved) { return TRUE ; } EXPORT TCHAR * CALLBACK GetName() { return TEXT("Test Name"); } 当我生成时,DLL仍然导出名称为“_GetName @ 0”的函数。 我究竟做错了什么?
我的项目只包含两个源文件: a.cpp: const int n = 8; b.cpp: extern const int n; int main() { // error LNK2001: unresolved external symbol "int const n" (?n@@3HB) int m = n; } 我知道有几种方法可以使其工作。 但是,我只是想知道为什么它不起作用?
通过JavaScript的w3schools教程 ,发现下面的声明: 全局variables具有全局范围:网页上的所有脚本和函数都可以访问它。 所以,我的查询是,我们有办法引用在特定的网页中声明的variables? 例如,在C语言中,我们有extern关键字,使用它我们可以访问在另一个文件中声明的variables,但是我们可以在我们的文件中引用它。 例如: 在fileA.html的脚本标签里,我们声明了var x = 50 ,在function()声明之外,所以它是全局的wrt fileA.html。 如果我有fileB.html,我们可以参考fileB.html中embedded的脚本标记中的x? 只是要清楚,这不是在网页上重复使用JavaScript文件的情况。
我明白,“内联”本身就是对编译器的一种build议,在其内容中可能会或可能不会内联函数,也会产生可链接的对象代码。 我认为“静态内联”的做法是一样的(不一定内联),但内联时不会生成可链接的对象代码(因为没有其他模块可以链接到它)。 “extern inline”在哪里适合图片? 假设我想用一个内联函数replace一个预处理macros,并且要求这个函数被内联(例如,因为它使用__FILE__和__LINE__macros,这个macros应该为调用者parsing而不是这个被调用的函数)。 也就是说,如果函数没有被内联,我想看到一个编译器或链接器错误。 “extern inline”是否这样做? (我假设,如果没有,除了坚持使用macros之外,没有办法实现这种行为。) C ++和C有区别吗? 不同的编译器厂商和版本有区别吗?
我知道C中的全局variables有时候有extern关键字。 什么是externvariables? 什么是宣言? 它的范围是什么? 这与在源文件中共享variables有关,但是它是如何精确地工作的呢? 我在哪里使用extern ?