Я могу смешать экстерна и константу как константа экстерна? Если да, спецификатор константы налагает, это - господство только в объеме, в котором это объявляется, или это должно точно соответствовать объявлению переводной единицы, в которой это объявляется? Т.е. могу я объявлять сказать extern const int i;
даже когда фактическое я не константа и наоборот?
Обычный шаблон:
extern const int a_global_var;
#include "file.h"
const int a_global_var = / * некоторое выражение const * /;
Изменить: включенный комментарий legends2k. Спасибо.
Лично я думаю, что я бы использовал функцию с несколькими возвращениями для этой цели:
function intGradeToStrGrade($grade) {
if ($grade >= 90) return "A";
if ($grade >= 80) return "B";
...
}
Однако здесь были некоторые споры о SO, если несколько возвращений в одной функции ОК или нет. Ваш выбор. Я думаю, что это намного чище, чем затянутое заявление.
-121--4180356-http://curl.haxx.se/mail/lib-2002-05/0090.html
libcurl не имеет асинхронного интерфейса. Вы можете сделать это самостоятельно либо с использованием потоков или с помощью неблокирующий «мультиинтерфейс», который предложения libcurl. Читать на нескольких интерфейс здесь:
http://curl.haxx.se/libcurl/c/libcurl-multi.html
PHP пример мультиинтерфейса здесь:
http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/
-121--1420976-Вы можете использовать их вместе и вы можете делать все виды вещей, которые игнорируют ключевое слово const, потому что это все; ключевое слово. Он говорит компилятору, что вы не будете изменять переменную, которая, в свою очередь, позволяет компилятору делать некоторые полезные оптомизации и останавливает вас от изменения вещей, которые вы не хотели.
Possibility.com имеет приличную статью с еще некоторым фоном.
$grade=87;
$grades=array("A"=>range(95,100),"B"=>range(80,94),"C"=>range(70,79),"Failed"=>range(0,69));
foreach($grades as $g=>$v){
if ( in_array($grade,$v) ){
print $g."\n";
}
}
-121--4180358- Я бы рекомендовал не использовать глобальные переменные, если это возможно. Используйте пространство имен и OOP для передачи аргументов объекту.
Этот код принадлежит файлу .js:
var MYLIBRARY = MYLIBRARY || (function(){
var _args = {}; // private
return {
init : function(Args) {
_args = Args;
// some other initialising
},
helloWorld : function() {
alert('Hello World! -' + _args[0]);
}
};
}());
И в вашем html-файле:
<script type="text/javascript" src="file.js"></script>
<script type="text/javascript">
MYLIBRARY.init(["somevalue", 1, "controlId"]);
MYLIBRARY.helloWorld();
</script>
-121--1831941- Да, вы можете использовать их вместе.
Если вы объявляете «extern const int i», то i является const по всей его области. Переопределить его как неконст невозможно. Конечно, можно обойти флаг const, отбросив его (с помощью const_cast).
Вы можете использовать их вместе. Но вам нужно быть последовательным в использовании const, потому что, когда C ++ выполняет оформление имен, const включается в информацию о типе, которая используется для украшения имен символов. поэтому extern const int i
будет ссылаться на другую переменную, чем extern int i
, если вы не используете extern «C» {}. Оформление имени C не обращает внимания на const.