我们有一些包含 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
MSVC 是否有一个编译指示语句会导致编译器始终重建文件 - 甚至在它认为它刚刚构建的情况下?
如果我设置journal_size_limit = 67110000(64 MiB),我将能够:
VACUUM(即使数据库有 3 GiB 或更多)VACUUM 命令的工作原理是将数据库的内容复制到临时数据库文件中,然后用临时文件的内容覆盖原始文件。覆盖原始文件时,将使用回滚日志或预写日志 WAL 文件,就像用于任何其他数据库事务一样。这意味着在对数据库进行 VACUUM 操作时,所需的可用磁盘空间是原始数据库文件大小的两倍。
文档中并不完全清楚,如果有人能确切地告诉我,我将不胜感激。
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
我在 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) 在头文件中,我想#pragma comment lib根据包含头文件和正在构建的项目是 dll 还是 staticLib 项目来选择正确的 lib 文件。
是否有任何预定义的预处理器变量我可以 #if 来解决它?
我已经看到_DLL可以用来查看这里使用的是静态还是动态 CRT:https : //msdn.microsoft.com/en-us/library/b0084kay.aspx?f=255&MSPPError=-2147217396
鉴于这个库:
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 项目设置上运行它:
但我面临链接器错误,例如:
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")但没有一个起作用。
我还尝试在链接器中包含 …
#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并且什么都不做!
在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 开关非常不同 …
最近阅读一些代码时,我遇到了几个包含
#pragma once在文件开头的 .cpp 文件。我知道它通常在 .h 文件中用作防护。
在什么情况下#pragma once应该/可以/必须在 .cpp 文件中使用?
pragma ×10
c++ ×5
asp.net-mvc ×1
c ×1
c++-modules ×1
direct3d ×1
hlsl ×1
include ×1
journal ×1
journaling ×1
pack ×1
razor ×1
rebuild ×1
shader ×1
sockets ×1
sqlite ×1
standards ×1
struct ×1
transactions ×1
visual-c++ ×1