Pourquoi le compilateur toujours m'avertir à propos dangereux strtok, même après que je définir _CRT_SECURE_NO_WARNINGS?

Je suis à l'aide de Visual Studio Express 2012 pour le Bureau de Windows.

J'ai toujours l'erreur

Error C4996: 'strtok': This function or variable may be unsafe.
  Consider using strtok_s instead.
  To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
  See online help for details.

Quand j'essaie de compiler les suivantes:

#include "stdafx.h"
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
int main() {
    char the_string[81], *p;
    cout << "Input a string to parse: ";
    cin.getline(the_string, 81);
    p = strtok(the_string, ",");
    while (p != NULL) {
        cout << p << endl;
        p = strtok(NULL, ",");
    }
    system("PAUSE");
    return 0;
}

Pourquoi j'obtiens cette erreur, même si je définir _CRT_SECURE_NO_WARNINGS, et comment puis-je résoudre ce problème?

Il n'y a pas de question, et aucun sens du tout. Pourquoi ne pas tout simplement à l'aide de strtok_s ? Quel est le problème ?
Votre #define devrait en tout cas être avant #include "stdafx.h" ou bien mettre dans votre projet de propriétés sous C++/définitions de Préprocesseur.
La solution est de 1) lire le détail dans l'aide en ligne, et 2) l'utilisation strtok_s au lieu de cela, comme l'a suggéré - ou d'utiliser des fonctions C++ au lieu de C. pas désactiver les avertissements.
Parce que strtok_s est une propriété de la bibliothèque de l'extension et n'est donc pas portable.

OriginalL'auteur | 2014-01-10