我希望能够对类似的方法进行分组,并将它们显示在Eclipse的Outline视图中.这使得在大范围内更容易导航大量代码,并且更容易找到所需的方法.在Objective-C中,您可以设置一个pragma mark命令.
对java/eclipse有什么相似之处吗?
刚见过这里面 <boost/asio.hpp>
#ifndef BOOST_ASIO_HPP
#define BOOST_ASIO_HPP
#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
/// ....
#endif // BOOST_ASIO_HPP
Run Code Online (Sandbox Code Playgroud)
无视_MSC_VER
预处理器检查,#pragma once
在这种情况下有什么好处?在所有情况下以及在所有平台上,预处理器头部保护是否都不能确保头部内容只有included
一次?
我的代码过去常用,但现在结构大小突然是16个字节.它曾经是13个字节.我最近从Xcode 4.2升级到Xcode 4.3.1(4E1019).
#pragma pack(1)
struct ChunkStruct {
uint32_t width;
uint32_t height;
uint8_t bit_depth;
uint8_t color_type;
uint8_t compression;
uint8_t filter;
uint8_t interlace;
};
#pragma pack()
STATIC_ASSERT(expected_13bytes, sizeof(struct ChunkStruct) == 13);
Run Code Online (Sandbox Code Playgroud)
我试过不成功的使用
#pragma pack(push, 1)
/* struct ChunkStruct { ... }; */
#pragma pack(pop)
Run Code Online (Sandbox Code Playgroud)
我也试过以下,但没有运气
struct ChunkStruct {
uint32_t width;
uint32_t height;
uint8_t bit_depth;
uint8_t color_type;
uint8_t compression;
uint8_t filter;
uint8_t interlace;
} __attribute__ ((aligned (1)));
Run Code Online (Sandbox Code Playgroud)
如何用Xcode 4.3.1打包结构?
有一组通用规则/指南,可以帮助了解什么时候喜欢pragma Pure
,pragma Preelaborate
或别的东西完全?标准(Ada 2012)中提出的规则和定义有点沉重,我很感激阅读一些更为清晰的内容并针对普通案例.
如果我想彻底了解它的"原因",我可以简单地试试:
pragma Pure;
pragma Preelaborate;
pragma Elaborate
单元,要么重新考虑包布局.with
with
虽然这可能有效(是吗?),因为建议尽可能将包标记为Pure(同样使用Preelaborate),但它看起来有点脑损伤,我更愿意更好地理解这个过程.
警告:#pragma在主文件中一次
我们通过clang运行我们的标题以获得部分AST.
是否可以禁用该警告?
可能重复:
#pragma - 帮助理解
我看过pragma
很多次,但总是很困惑,任何人都知道它的作用?它只是窗户吗?
我想禁用特定编译器警告nvcc
,特别是
警告:不允许NULL引用
我正在使用的代码使用NULL
引用是其中的一部分#pragma
,因此无法避免.
一个理想的解决方案是nvcc
在我们想要禁用警告的源文件中,但编译器标志也可以,如果存在只关闭有问题的警告.
编辑:5年前我问过这个问题,从那以后就提供了两种不同的解决方案.
下面的@ user2333829提出的第一个是使用NULL
编译器标志来关闭整个文件的警告.
第二个解决方案,通过@cr_dave5年提出的问题被问之后,是一个#pragma
基础的方法,可以让你关闭警告非常有针对性的方式.
多年来感谢您的反馈!
命令"pragma table_info('tablename')"列出列信息,"pragma foreign_key_list('tablename')"列出外键.如何显示表的其他约束(检查,唯一)?只解析表"sqlite_master"的字段"sql"?
我正在寻找一种方法来抑制我可能通过pragma指令获得的所有可能的警告.我制作了一些警卫宏来帮助我让第三方标题从警告中消失,而现在它们对于msvc和clang来说就像魅力一样.我仍然缺少使用Gcc诊断编译指示的正确方法来抑制部分中的每个警告.我举几个例子:
在msvc中我们可以这样做:
#pragma warning(push, 0)
// Code that produces warnings...
#pragma warning(pop)
Run Code Online (Sandbox Code Playgroud)
在clang我们可以做到这一点:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wall"
#pragma clang diagnostic ignored "-Wextra"
// Code that produces warnings...
#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)
中间的代码现在正在被警告保持沉默.
在Gcc中我们也有类似的pragma指令与clang,我想我可以尝试这样的事情:
#pragma GCC diagnostic push
#pramga GCC diagnostic ignored "-Wall"
#pragma GCC diagnostic ignored "-Wextra"
// Code that produces warnings...
#pramga GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)
但是在GCC中传递-Wall和-Wextra在诊断忽略的pragma中并不像clang那样工作,并且不会禁用所有可能的警告.而不是传递一个特定的警告来禁用工作:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
void foo (int x) // No longer getting "unused …
Run Code Online (Sandbox Code Playgroud) 我在Visual Studio 2015 sp3中使用C++.通过
#pragma init_seg(compiler)
Run Code Online (Sandbox Code Playgroud)
,我首先初始化一些静态变量(到内存管理). https://msdn.microsoft.com/en-us/library/7977wcck.aspx
但是还有
Run Code Online (Sandbox Code Playgroud)#pragma init_seg(compiler)
在wcerr.cpp(Microsoft Visual Studio 14.0\VC\crt\src\stl\wcerr.cpp)中,所以这些对象在我的对象之前初始化.
我可以wcerr.cpp
通过任何编译/链接选项强制我的对象在对象之前被初始化吗?
c++ pragma static-variables visual-studio visual-studio-2015