标签: pragma

在 Razor 视图中使用 #pragma 语句

我们有一些包含 jQuery vsDoc 的文件,用于语法帮助;

@if (false)
{
    <script src="@Url.Content("~/Scripts/jquery.validate-vsdoc.js")" type="text/javascript"></script>
}
Run Code Online (Sandbox Code Playgroud)

它会生成一些关于无法访问代码的烦人的编译器警告,我想用#prama 警告包装该语句,但我无法弄清楚 Razor 中的语法。

谢谢!

compiler-construction asp.net-mvc pragma compiler-warnings razor

3
推荐指数
1
解决办法
985
查看次数

MSVC:强制重建文件的编译指示?

MSVC 是否有一个编译指示语句会导致编译器始终重建文件 - 甚至在它认为它刚刚构建的情况下?

rebuild pragma visual-studio visual-c++

3
推荐指数
1
解决办法
1141
查看次数

关于 SQLite 中的journal_size_limit 的澄清

如果我设置journal_size_limit = 67110000(64 MiB),我将能够:

  1. 使用/提交超过该值的事务(有点不可能)
  2. 能够成功执行VACUUM(即使数据库有 3 GiB 或更多)

VACUUM 命令的工作原理是将数据库的内容复制到临时数据库文件中,然后用临时文件的内容覆盖原始文件。覆盖原始文件时,将使用回滚日志或预写日志 WAL 文件,就像用于任何其他数据库事务一样。这意味着在对数据库进行 VACUUM 操作时,所需的可用磁盘空间是原始数据库文件大小的两倍

文档中并不完全清楚,如果有人能确切地告诉我,我将不胜感激。

sqlite transactions pragma journal journaling

3
推荐指数
1
解决办法
1546
查看次数

VS2013忽略编译指示警告禁用

int main() {
#pragma warning(push)
#pragma warning(disable: 4101)
    int i;
#pragma warning(pop)
}
Run Code Online (Sandbox Code Playgroud)

########################### 要么 ###################### #####

int main() {
#pragma warning(suppress: 4101)
    int i;
}
Run Code Online (Sandbox Code Playgroud)

我相信其中任何一个都应该在Visual Studio 2013上进行编译,警告被视为错误,没有C4101警告(关于我是一个未引用的局部变量.)这是一个4级警告.

但是,它仍在给我警告.即使我关闭被视为错误的警告,它仍然会给我警告,尽管它编译因为没有错误.

我没有使用预编译的头文件/ stdafx.h.我看到其他一些问题,说这个pragma技术可以解决实际代码(也许它们意味着代码在头文件中,但没有指定或看起来像那样).其他一些人在stdafx.h被忽略之前含糊地说没有解释任何#pragma命令.但是' https://msdn.microsoft.com/en-us/library/d9x1s805(v=vs.120).aspx '特别提到了pragma可以在源代码中覆盖编译器选项.当然,我从来没有使用stdafx.h,更像是一个unix家伙,所以也许有一些完全基本的东西我完全不知道了.

我已经尝试过指定C4101而不仅仅是4101,并且它无法在那里处理alpha.我已经尝试指定#pragma warning(push 2),即使这会触及我不想做的所有3级和4级警告 - 甚至那仍然会给出4级警告.

这是我的编译器命令行选项: /MP /GS /W4 /Zc:wchar_t /Zi /Gm- /Od /sdl /Fd"<...>\pragmaWarning\Intermediate\vc120.pdb" /fp:precise /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /Fa"<...>\pragmaWarning\Intermediate\" /EHsc /nologo /Fo"<...>\pragmaWarning\Intermediate\" /Fp"<...>\pragmaWarning\Intermediate\pragmaWarning.pch"

如您所见,这些命令行选项省略了被视为错误的警告.

c++ pragma c-preprocessor preprocessor-directive visual-studio-2013

3
推荐指数
1
解决办法
2205
查看次数

#Pragma pack 编译时发出警告

我在 C 中创建以下结构,只有数据包结构将通过 UDP 套接字发送。我想打包结构以避免在不同的计算机上出现不同的对齐方式(不确定我是否需要打包两者或只打包我发送的一个)。当我编译它时,我收到以下两个警告:

warning: ignoring #pragma ( [-Wunknown-pragmas] #pragma(pack);`
Run Code Online (Sandbox Code Playgroud)

为什么我的编译指示被忽略?以及如何解决这个问题。

#pragma push(pack, 1);
struct packet{ // the actual packet within the node
    uint32_t seqnum;
    uint32_t checkSum;
    uint32_t numPackets; // number of packets to send
    char data[1024]; // the data in the packet
};
struct packetNode{ //for the linked list
    struct packet p;
    struct packetNode *next;
};
#pragma pop(pack)
Run Code Online (Sandbox Code Playgroud)

gcc 版本:

gcc --version 
gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4
Run Code Online (Sandbox Code Playgroud)

c sockets struct pragma pack

3
推荐指数
1
解决办法
5171
查看次数

如何判断当前项目是 dll 还是静态库?

在头文件中,我想#pragma comment lib根据包含头文件和正在构建的项目是 dll 还是 staticLib 项目来选择正确的 lib 文件。

是否有任何预定义的预处理器变量我可以 #if 来解决它?

我已经看到_DLL可以用来查看这里使用的是静态还是动态 CRT:https : //msdn.microsoft.com/en-us/library/b0084kay.aspx?f=255&MSPPError=-2147217396

c++ pragma dynamic-linking static-linking visual-studio

3
推荐指数
1
解决办法
1156
查看次数

pragma comment(lib) 不起作用

鉴于这个库:

lib1.h:

#pragma once

#include <windows.h>

void foo();
Run Code Online (Sandbox Code Playgroud)

库1.cpp

#include "lib1.h"

void foo() {
    MessageBox(NULL, "XXX", "YYY1", MB_OK);
}
Run Code Online (Sandbox Code Playgroud)

使用以下命令在命令行中创建:

cl /c lib1.cpp
lib lib1.obj
Run Code Online (Sandbox Code Playgroud)

然后这个小测试:

#pragma comment(lib, "lib1")

#include "lib1.h"

void start() {
    foo();
}
Run Code Online (Sandbox Code Playgroud)

我尝试在 Windows vs2015 项目设置上运行它:

  • /节点默认库
  • 条目:开始
  • 禁用优化 (/Od)
  • (安全检查已禁用)/GS-

但我面临链接器错误,例如:

main.obj : error LNK2019: unresolved external symbol "void __cdecl foo(void)" (?foo@@YAXXZ) referenced in function "void __cdecl start(void)" (?start@@YAXXZ)
Run Code Online (Sandbox Code Playgroud)

我尝试将 pragma 注释更改为#pragma comment(lib, "lib1.lib"), #pragma comment(lib, ".\\lib1.lib")#pragma comment(lib, "./lib1.lib")但没有一个起作用。

我还尝试在链接器中包含 …

c++ pragma visual-studio visual-studio-2015

3
推荐指数
1
解决办法
6217
查看次数

HLSL #pragma 一次等效?

#pragma onceHLSL 中与 C/C++-like 的等价物是什么?

我想要(作为一个人为的例子):

// ./dependency.hlsl
float x() { return 0; }

// ./shader.hlsl
#include "./dependency.hlsl" // (./ unnecessary; for question readability)
#include "./dependency.hlsl"
Run Code Online (Sandbox Code Playgroud)

不会失败error X3003: redefinition of 'x'#pragma once在我的文件顶部产生一个非错误warning X3568: 'once' : unknown pragma ignored并且什么都不做!

shader direct3d pragma hlsl include

3
推荐指数
1
解决办法
1496
查看次数

P1881 中基于 C++ 模块的时代与潜在的#pragma-based 时代

P1881提案中,提出了 C++ 代码的epoch(在模块级别)的概念。此类功能可以允许在模块级别自定义 C++ 语法和 C++ 行为,而不必破坏向后兼容性。提案中给出了更详细的动机

提案中的隐式转换示例

版本 1:没有时代,一切都编译正常

module ParticleMovement;

export void move(Particle&, float x, float y);

void moveExample()
{
    Particle p{};
    move(p, 3.42, 2.49);    // OK
}
Run Code Online (Sandbox Code Playgroud)

版本 2 :(epoch 2023假设在其中禁用隐式转换),代码格式错误:

epoch 2023;                 // Module-level switch
module ParticleMovement;

export void move(Particle&, float x, float y);

void moveExample()
{
    Particle p{};

    move(p, 3.42, 2.49);    // Compilation error

    move(p, 3.42f, 2.49f);  // OK, no implicit conversions
}
Run Code Online (Sandbox Code Playgroud)

这绝对看起来是一个有趣的提议,并且与简单地指定 compile 开关非常不同 …

c++ standards pragma c++-modules

3
推荐指数
1
解决办法
173
查看次数

在 .cpp 文件中使用一次 pragma

最近阅读一些代码时,我遇到了几个包含 #pragma once在文件开头的 .cpp 文件。我知道它通常在 .h 文件中用作防护。

在什么情况下#pragma once应该/可以/必须在 .cpp 文件中使用?

c++ pragma

3
推荐指数
1
解决办法
1952
查看次数