Questions tagged «include-guards»

14
#pragma是否曾经是安全的门卫?
我已经读到有一些使用时的编译器优化#pragma once可以导致更快的编译。我认识到这是非标准的,因此可能引起跨平台兼容性问题。 非Windows平台(gcc)上的大多数现代编译器都支持这种功能吗? 我想避免平台编译问题,但也想避免后备防护的额外工作: #pragma once #ifndef HEADER_H #define HEADER_H ... #endif // HEADER_H 我应该担心吗?我是否应该为此花费更多的精力?


30
防止直接访问php包含文件
我有一个php文件,我将专门将其用作包含文件。因此,我想抛出一个错误而不是在直接通过输入URL而不是将其包含而直接访问它时执行该错误。 基本上我需要在php文件中进行如下检查: if ( $REQUEST_URL == $URL_OF_CURRENT_PAGE ) die ("Direct access not premitted"); 是否有捷径可寻?

3
为什么我的include防护不能阻止递归包含和多个符号定义?
关于警卫的两个常见问题: 第一个问题: 为什么不包括保护我的头文件不被相互递归包含的保护措施?每当我编写如下内容时,我都会不断收到关于不存在的符号的错误,这些符号显然在那里,甚至是更奇怪的语法错误: “啊” #ifndef A_H #define A_H #include "b.h" ... #endif // A_H “ bh” #ifndef B_H #define B_H #include "a.h" ... #endif // B_H “ main.cpp” #include "a.h" int main() { ... } 为什么在编译“ main.cpp”时出现错误?我该怎么做才能解决我的问题? 第二个问题: 为什么不包括防止多个定义的防护措施?例如,当我的项目包含两个包含相同标题的文件时,有时链接器会抱怨某个符号多次定义。例如: “ header.h” #ifndef HEADER_H #define HEADER_H int f() { return 0; …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.